
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
Resulta 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, correndo
myResult contains "Files Synced"
Me dá uma impressão de todo o resultado novamente. Como faço para pesquisar esse resultado para determinar se uma string está presente?
Responder1
Você obteve a mesma impressão nas duas vezes porque não removeu a return myResult
linha após a primeira execução. return
sempre encerrará um script quando atingir este comando.
▸ Além disso, altere isto:
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
.
Alternativamente, sem as declarações explícitas de variáveis (e usando a variável predefinida AppleScript result
):
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 precisar de algum esclarecimento ou tiver alguma dúvida, não hesite em deixar um comentário e entrarei em contato com você. Considere selecionar esta como sua resposta aceita se isso ajudar a resolver seu problema.