AppleScript - Jak wyszukać wynik dla ciągu?

1

Próbuję wyszukać wynik kodu AppleScript, aby ustalić, czy pojawi się ciąg.

Uruchamianie tego kodu:

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

Prowadzi do:

{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"}

Teraz chciałbym przeszukać ten wynik, aby sprawdzić, czy „Synchronizacja plików” jest dostępna. Jednak działa

 myResult contains "Files Synced"

Ponownie daje mi wydruk całego wyniku. Jak przeszukać ten wynik, aby ustalić, czy łańcuch jest obecny?

ace973
źródło

Odpowiedzi:

0

Otrzymałeś ten sam wydruk za każdym razem, ponieważ nie usunąłeś return myResultlinii po pierwszym uruchomieniu. returnzawsze kończy skrypt po osiągnięciu tego polecenia.

▸ Dodatkowo zmień to:

    set myStatus to menu items of menu 1

do tego:

    set myResult to name of menu items of menu 1

▸ Usuń tę linię:

    get menu items of menu 1

i ta linia:

    set myResult to result

(Dosłownie nic nie robią.)

Twój końcowy skrypt będzie wyglądał następująco:

    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

który zwróci truelub false.

Alternatywnie, bez wyraźnych deklaracji zmiennych (i przy użyciu wstępnie zdefiniowanej resultzmiennej 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

Jeśli potrzebujesz wyjaśnień lub masz dodatkowe pytania, nie wahaj się zostawić komentarza, a skontaktuję się z Tobą. Proszę rozważyć wybranie tego jako zaakceptowanej odpowiedzi, jeśli pomoże to rozwiązać problem.

CJK
źródło