Как я могу передать объект сценария в качестве параметра в сценарии Apple - PullRequest
0 голосов
/ 04 октября 2019
script WordShortcutKeys
    on OpenDocument()
        tell application "Microsoft Word" to activate
        tell application "System Events"
            keystroke "o" using {control down, command down}
        end tell
    end OpenDocument
    on SaveSyncDocument()
        tell application "Microsoft Word" to activate
        tell application "System Events"
            keystroke "s" using {control down, command down}
        end tell
    end SaveSyncDocument
end script
set application_name to  "Word" & "ShortcutKeys"
application_name's SaveSyncDocument()

Ниже показано сообщение об ошибке

«« WordShortcutKeys »не понимает сообщение« SaveSyncDocument ».» Номер -1708 из «WordShortcutKeys»

1 Ответ

0 голосов
/ 04 октября 2019

Говоря технически, когда вы пишете эту конструкцию в AppleScript:

script some_script_id
    [...]
end script

Вы не называете объект-скрипт "some_script_id". Вы фактически устанавливаете переменную с именем some_script_id для объекта сценария, который следует. script some_script_id фактически эквивалентно set some_script_id to [...]. AppleScript не имеет синтаксиса для косвенной ссылки на переменные по имени, поэтому вы не можете делать то, что пытаетесь сделать со второй до последней строки. Вы можете (конечно) установить одну переменную в другую, например:

set application_name to  WordShortcutKeys
application_name's SaveSyncDocument()

... но в противном случае это ограничение AppleScript.

Также (как говорится), не 'использовать сценарии GUI, если у вас нет другого выбора. Word имеет встроенные команды для открытия и сохранения файлов. Использование этих встроенных команд гораздо более эффективно, гибко и надежно, чем создание сценариев для GUI;посмотрите словарь сценариев Word в редакторе сценариев, и вы увидите их.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...