AppleScript — как найти результат для строки?

AppleScript — как найти результат для строки?

Я пытаюсь выполнить поиск по результатам выполнения AppleScript, чтобы определить, появляется ли строка.

Выполнение этого кода:

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

Результаты в:

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

Теперь я хотел бы поискать этот результат, чтобы увидеть, присутствует ли "Files Synced". Однако запущенный

 myResult contains "Files Synced"

Дает мне распечатку всего результата снова. Как мне выполнить поиск по этому результату, чтобы определить, присутствует ли строка?

решение1

Оба раза вы получили одинаковую распечатку, потому что не удалили return myResultстроку после первого запуска. returnвсегда завершает скрипт, когда он достигает этой команды.

▸ Кроме того, измените это:

    set myStatus to menu items of menu 1

к этому:

    set myResult to name of menu items of menu 1

▸ Удалите эту строку:

    get menu items of menu 1

и эта строка:

    set myResult to result

(Они буквально ничего не делают.)

Ваш окончательный сценарий будет выглядеть так:

    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

который вернет trueили false.

Альтернативный вариант — без явного объявления переменных (и с использованием предопределенной resultпеременной 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

Если вам нужны какие-либо разъяснения или у вас есть дополнительные вопросы, не стесняйтесь оставлять комментарии, и я свяжусь с вами. Пожалуйста, рассмотрите возможность выбора этого в качестве принятого ответа, если это поможет решить вашу проблему.

Связанный контент