Создайте AppleScript для программы, которая не установлена на текущем компьютере

#applescript

#applescript

Вопрос:

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

Согласно информации на сайте Microsoft, оба приложения имеют одинаковую библиотеку команд AppleScript, и я должен иметь возможность просто изменить имя приложения, на которое ссылается скрипт.

Изменение:

 Tell application "Microsoft Entourage"
  

Для

 Tell application "Microsoft Outlook"
  

Не позволяет мне сохранить скрипт, потому что у меня не установлен Outlook на этом компьютере. Есть ли какой-либо способ обойти это? Нужно ли мне использовать текстовый редактор для редактирования фактического файла сценария и внесения в него изменений?

Спасибо!

Ответ №1:

Возможно, поможет следующий обходной путь. На компьютере, где установлена Entourage, директива using terms позволит вам скомпилировать скрипт, даже если Outlook не установлен:

 set theApp to a reference to application "Microsoft Outlook"
using terms from application "Microsoft Entourage"
    tell theApp
        get version
        ...
    end tell
end using terms from
  

После компиляции и сохранения скрипта редактор AppleScript выдаст вам сообщение об отсутствующем приложении Outlook, но, тем не менее, создаст скомпилированный файл AppleScript (.scpt).

Ответ №2:

Applescript — это предварительно установленный формат файла, означающий, что каждый раз, когда вы нажимаете «Сохранить», он выполняет серию шагов, чтобы гарантировать, что скрипт будет работать, но на самом деле не выполняет логику скрипта. Часть этих шагов заключается в поиске приложения, чтобы узнать, существует ли оно на Mac.

Короче говоря, если вы хотите сохранить скрипт как Applescript, вам необходимо установить целевое приложение, в противном случае вы можете сохранить скрипт как текстовый файл и переместить файл на целевой Mac, чтобы сохранить там как Applescript.

Ответ №3:

Должна быть возможность создать один скрипт, который работает как с Entourage, так и с Outlook, не беспокоя вас, если он не найден ни при компиляции, ни при запуске. У меня нет Entourage или Outlook, но это должно работать следующим образом:

 using terms from application "Microsoft Entourage"
    script theScript
        tell application "Finder" to try
            set theApp to application file id "Entourage's Bundle ID" as text
        on error
            set theApp to application file id "Outlook's Bundle ID" as text
        end try
        tell application theApp
            -- do stuff
        end tell
    end script
end using terms from
store script theScript in "MyScript.scpt"
  

«использование терминов из» уместно только при компиляции скрипта — это не требуется при запуске, хотя по какой-то причине вы все равно будете получать сообщения об ошибках, если это приложение не найдено. Таким образом, обернув ее вокруг объекта script, а затем записав этот скрипт в файл, результирующий скрипт все равно будет выполняться, но не будет содержать «использование терминов из» и, таким образом, не вызовет ошибок у пользователя.

Чтобы получить ссылку на нужное приложение, Finder может искать его по идентификатору и просто выдавать ошибку, если оно не найдено, вместо того, чтобы беспокоить пользователя. Вам нужно будет вставить туда соответствующие идентификаторы, я не знаю, что это такое.