!Информация, на которой я основывал свой ответ, была устаревшей, см. Мой ответ об обновлении.
Причина, по которой ошибки сценария заключаются в следующем:
"Импортфреймворков через оператор использования поддерживается только в библиотеках сценариев, но не в других сценариях или апплетах. "
Итак, в принципе: вам не разрешено использовать use
утверждение в обычном скрипте AppleScript.Вы можете только использовать его в библиотеках сценариев.
Чтобы исправить это, мы создаем «библиотеку сценариев», которая является просто еще одним файлом AppleScript.Допустим, мы называем эту библиотеку сценариев chewbacca.scpt
.Вам нужно разместить скрипт в определенном месте на вашем Mac.(У вас есть несколько вариантов для этого местоположения).AppleScript только ищет в этих местах при попытке импортировать библиотеки скриптов.
Затем, чтобы использовать библиотеку скриптов, сделайте что-то вроде:
tell script "chewbacca"
display dialog "foo"
end tell
Это должно дать желаемый результат.
Обновление :
После прочтения некоторых ответов и прочтения дополнительной документации:
Расширение AppleScript путем импорта библиотеки вызывает эти библиотекиosax (или «Добавление сценариев»), потому что их имена заканчиваются на .osax
.OSAX расшифровывается как «Open Scripting Architecture eXtension».Чтобы импортировать осакс, мы пишем use library
в нашем скрипте (я не уверен на 100% в этом).Импортируя osax, мы можем использовать команды в этом osax.
AppleScript (язык) не имеет команд для таких вещей, как: диалоги взаимодействия с пользователем (display dialog
), чтение и запись файлов, команды файловой системы,функции даты, текстовые и математические операции.
Но: Apple предоставляет осакс, который предлагает следующие команды: StandardAdditions.osax
, нетрудно понять, почему это один из наиболее часто используемых осах.
Чтобы импортировать этот осакс:
use scripting additions
Теперь вернемся к моему вопросу:
Я вижу, что AppleScript ведет себя по-разному при определенных условиях:
- скрипт делаетне импортировать osax
- скрипт импортирует osax (но не
StandardAdditions.osax
)
В ситуации 1 кажется, что AppleScript (среда выполнения?) автоматически импортирует StandardAdditions.osax
,Я думаю, что это так, потому что я могу использовать display dialog
.
В ситуации 2 AppleScript (среда выполнения) не импортирует автоматически StandardAdditions.osax
.
Я могу теоретизировать об этом другом поведении:
Я подозреваю, что в ситуации 1 они хотят, чтобы людям было легче начать работу с AppleScript, поэтому они автоматически импортируют основные команды, которые, вероятно, хотят использовать большинство людей / новичков.
Мышлениеза ситуацией 2 могло быть что-то вроде: «разработчик явно импортирует осакс, поэтому им может не потребоваться StandardAdditions.osax
, поэтому давайте не будем импортировать его автоматически».
Я нашел где-то, что этохорошая идея всегда явно импортировать StandardAdditions.osax
, добавив use scripting additions
в ваш скрипт.Я последую этому совету в будущем.