1

Я пытаюсь найти результат 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"}

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

 myResult contains "Files Synced"

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

1 ответ1

0

Вы получили одну и ту же распечатку оба раза, потому что вы не удалили 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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .