Выбор параметра раскрывающегося списка в Google Forms с помощью VBA - PullRequest
1 голос
/ 07 апреля 2020

у нас есть база данных людей, которые получат финансовую помощь по ситуации с COVID-19. Я пытаюсь создать код VBA, который позволит мне заполнить форму Google, которая будет использоваться для сбора данных: https://docs.google.com/forms/d/e/1FAIpQLSfmOe5my6a0OwGj5jOY1hFNreZCjDGLuK7qllEr18tlGxys-w/viewform.

Проблема в том, что в этой форме есть выпадающий список, и по какой-то причине я не могу выбрать ни один из параметров в списке. Вот что я попробовал до сих пор:

Dim IE As Object
Set IE = CreateObject("InternetExplorer.Application")

    IE.navigate "https://docs.google.com/forms/d/e/1FAIpQLSfmOe5my6a0OwGj5jOY1hFNreZCjDGLuK7qllEr18tlGxys-w/viewform"
    IE.Visible = True

    IE.document.all("entry.2084723474").InnerText = "Teste Nome"
    IE.document.all("entry.1921177593").InnerText = "37121851890"

Set HTML = IE.document
Set elements = HTML.getElementsByclassName("quantumWizMenuPaperselectOptionList")

For Each element In elements
    If element.className = "quantumWizMenuPaperselectOptionList" Then
        element.Click
    End If
Next element

Dim e
For Each e In IE.document.getElementsByTagName("span")
    If e.InnerText = "Paraisópolis (SP)" Then

        ' Found the <span>.
        e.parentelement.Click

        Exit For

    End If
Next

В этой части я нашел опцию в списке, но когда я отправляю команду Click в его родительском элементе, не происходит ничего:

Dim e
For Each e In IE.document.getElementsByTagName("span")
    If e.InnerText = "Paraisópolis (SP)" Then

        ' Found the <span>.
        e.parentelement.Click

        Exit For

    End If
Next

Вот и все, любая помощь будет очень полезна для меня в данный момент. И я извиняюсь за мой ужасный английский sh.

Ответы [ 2 ]

0 голосов
/ 08 апреля 2020

Используя инструменты разработчика F12 для проверки выбранного параметра DropDownList, мы видим, что параметры DropDownList могут быть выбраны путем добавления / удаления стиля класса "isSelected". Пожалуйста, проверьте следующий снимок экрана:

enter image description here

Кроме того, из приведенного выше изображения мы также можем найти опцию DropDownList, содержащую атрибут «data-value», который равно тексту опции DropDownList. Таким образом, мы могли бы использовать его, чтобы найти параметры, а затем добавить / удалить значение класса.

Пожалуйста, обратитесь к следующему примеру кода:

Sub Test()
    Dim IE As Object, Data As Object
    Set IE = CreateObject("InternetExplorer.Application")
    With IE
        .Visible = True
        .navigate ("https://docs.google.com/forms/d/e/1FAIpQLSfmOe5my6a0OwGj5jOY1hFNreZCjDGLuK7qllEr18tlGxys-w/viewform")

        While IE.ReadyState <> 4
            DoEvents
        Wend

        IE.document.all("entry.2084723474").InnerText = "Teste Nome"
        IE.document.all("entry.1921177593").InnerText = "37121851890"

        Dim itemlist As Object

        Set itemlist = IE.document.getElementsByClassName("quantumWizMenuPaperselectOption")

        Dim selectedvalue As String

        selectedvalue = "Cap*"

        If Len(itemlist) > 0 Then
            For Each Item In itemlist
                'Debug.Print Item.getAttribute("data-value")
                'check whether the DropDownList option starts with the selected value.
                If Item.getAttribute("data-value") Like selectedvalue Then
                    Item.classList.Add ("isSelected")
                    Item.setAttribute "aria-selected", "true"
                    Item.setAttribute "tabindex", "0"
                Else
                    Item.classList.Remove ("isSelected")
                    Item.setAttribute "aria-selected", "false"
                    Item.setAttribute "tabindex", "-1"
                End If
            Next Item
        End If
    End With
    Set IE = Nothing
End Sub

[Примечание] Поскольку опция DropDownList содержит разные символы, VBA может ее не идентифицировать. Подробнее, пожалуйста, проверьте следующий результат отладки. Итак, в приведенном выше коде я найду параметры DropDownList с использованием первых трех символов.

Результат отладки VBA:

enter image description here

После запуска вышеуказанного VBA-скрипта результат будет следующим:

enter image description here

0 голосов
/ 07 апреля 2020

Документы Google не используют VBA. Что у вас там есть javascript.
Не уверен, какой выпадающий должен заполнить что. Пожалуйста, уточните.

...