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