
Я пытаюсь выполнить поиск по результатам выполнения 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
Если вам нужны какие-либо разъяснения или у вас есть дополнительные вопросы, не стесняйтесь оставлять комментарии, и я свяжусь с вами. Пожалуйста, рассмотрите возможность выбора этого в качестве принятого ответа, если это поможет решить вашу проблему.