AppleScript - Como resultado da pesquisa para uma string?

1

Estou tentando pesquisar o resultado de um AppleScript para determinar se uma string aparece.

Executando este código:

tell application "System Events" to tell process "Box Sync" to ¬
    tell menu bar item 1 of menu bar 2
        click
        get menu items of menu 1
        set myStatus to menu items of menu 1
        set myResult to result
        return myResult             
    end tell

Resultados em:

{menu item "Files Synced" of menu 1 of menu bar item 1 of menu bar 2 of application process "Box Sync" of application "System Events", menu item 2 of menu 1 of menu bar item 1 of menu bar 2 of application process "Box Sync" of application "System Events", menu item "Pause" of menu 1 of menu bar item 1 of menu bar 2 of application process "Box Sync" of application "System Events", menu item 4 of menu 1 of menu bar item 1 of menu bar 2 of application process "Box Sync" of application "System Events", menu item "Open Box Sync Folder" of menu 1 of menu bar item 1 of menu bar 2 of application process "Box Sync" of application "System Events", menu item "Open Box.com" of menu 1 of menu bar item 1 of menu bar 2 of application process "Box Sync" of application "System Events", menu item 7 of menu 1 of menu bar item 1 of menu bar 2 of application process "Box Sync" of application "System Events", menu item "Preferences…" of menu 1 of menu bar item 1 of menu bar 2 of application process "Box Sync" of application "System Events", menu item 9 of menu 1 of menu bar item 1 of menu bar 2 of application process "Box Sync" of application "System Events", menu item "Quit" of menu 1 of menu bar item 1 of menu bar 2 of application process "Box Sync" of application "System Events"}

Agora, gostaria de pesquisar este resultado para ver se "Arquivos sincronizados" está presente. No entanto, executando

 myResult contains "Files Synced"

Me dá uma impressão do resultado inteiro novamente. Como faço para pesquisar esse resultado para determinar se uma string está presente?

    
por ace973 31.01.2018 / 19:55

1 resposta

0

Você obteve a mesma impressão nas duas vezes porque não removeu a linha return myResult após sua primeira execução. return sempre terminará um script quando ele atingir este comando.

▸ Além disso, mude isso:

    set myStatus to menu items of menu 1

para isso:

    set myResult to name of menu items of menu 1

▸ Exclua esta linha:

    get menu items of menu 1

e esta linha:

    set myResult to result

(Eles literalmente não estão fazendo nada.)

Seu script final ficará assim:

    tell application "System Events" to tell process "Box Sync" to ¬
        tell menu bar item 1 of menu bar 2
            click
            set myResult to name of menu items of menu 1
            myResult contains "Files Synced"
        end tell

que retornará true ou false .

Como alternativa, sem as declarações de variáveis explícitas (e usando a variável result predefinida do AppleScript):

    tell application "System Events" to tell process "Box Sync" to ¬
        tell menu bar item 1 of menu bar 2
            click
            get the name of menu items of menu 1
            result contains "Files Synced"
        end tell

Se você precisar de algum esclarecimento ou tiver mais alguma dúvida, não hesite em deixar um comentário e entraremos em contato com você. Por favor, considere selecionar esta como sua resposta aceita, se isso ajudar a resolver o seu problema.

    
por 31.01.2018 / 20:43