AppleScript — это язык сценариев, созданный Apple Inc. , который обеспечивает автоматизированный контроль над скриптовыми приложениями Mac . Впервые представленный в System 7 , в настоящее время он включен во все версии macOS как часть пакета инструментов автоматизации системы. [4] [5] Термин «AppleScript» может относиться к самому языку, к отдельному сценарию, написанному на этом языке, или, неформально, к архитектуре открытых сценариев macOS, которая лежит в основе языка. [4] [5]
AppleScript — это в первую очередь скриптовый язык, разработанный Apple для межприкладного взаимодействия (IAC) с использованием событий Apple . [4] [5] AppleScript связан с событиями Apple, но отличается от них. События Apple предназначены для обмена данными между другими приложениями и управления ими с целью автоматизации повторяющихся задач.
AppleScript имеет некоторые собственные возможности обработки, в дополнение к отправке и получению событий Apple приложениями. AppleScript может выполнять базовые вычисления и обработку текста, и является расширяемым, что позволяет использовать дополнения к скриптам, которые добавляют новые функции к языку. Однако в основном AppleScript полагается на функциональность приложений и процессов для обработки сложных задач. Как структурированный командный язык AppleScript можно сравнить с оболочками Unix , Microsoft Windows Script Host или IBM REXX , но он отличается от всех трех. Существенным для его функциональности является тот факт, что приложения Macintosh публикуют «словари» адресуемых объектов и операций.
AppleScript имеет некоторые элементы процедурного программирования , объектно-ориентированного программирования (особенно при построении объектов скрипта) и тенденции программирования на естественном языке в своем синтаксисе, но не соответствует строго ни одной из этих парадигм программирования . [5] : xxvi
В конце 1980-х годов Apple рассматривала возможность использования языка сценариев HyperTalk от HyperCard в качестве стандартного языка для разработки конечных пользователей в рамках всей компании и в рамках ее классической операционной системы Mac OS , а также для межпроцессного взаимодействия между продуктами Apple и других производителей. [6] HyperTalk мог использоваться новичками для программирования стека HyperCard. Инженеры Apple осознали, что можно разработать похожий, но более объектно-ориентированный язык сценариев для использования с любым приложением , и проект AppleScript родился как ответвление исследовательской работы по модернизации Macintosh в целом и в конечном итоге стал частью System 7. [ 1]
AppleScript был выпущен в октябре 1993 года как часть System 7.1.1 (System 7 Pro, первое крупное обновление System 7). [1] QuarkXPress (версия 3.2) был одним из первых крупных программных приложений, которые поддерживали AppleScript. Это, в свою очередь, привело к широкому использованию AppleScript в издательском и допечатном мире, часто связывая воедино сложные рабочие процессы. Это стало ключевым фактором в сохранении доминирующего положения Macintosh в издательском и допечатном мире, даже после того, как QuarkXpress и другие издательские приложения были портированы на Microsoft Windows.
После некоторой неопределенности относительно будущего AppleScript в ОС следующего поколения Apple, переход на Mac OS X (около 2002 г.) и ее фреймворки Cocoa значительно увеличили полезность и гибкость AppleScript. Приложения Cocoa позволяют разработчикам приложений реализовывать базовую возможность скриптования для своих приложений с минимальными усилиями, расширяя число приложений, которые можно напрямую скриптовать. В то же время, переход на основы Unix и способность AppleScript запускать команды Unix напрямую, с помощью do shell script
команды, [7] позволили AppleScripts гораздо больше контролировать саму операционную систему. [5] : 863 AppleScript Studio, выпущенная с Mac OS X 10.2 как часть Xcode , и более поздняя фреймворк AppleScriptObjC, выпущенная в Mac OS X 10.6 , позволили пользователям создавать приложения Cocoa с использованием AppleScript. [5] : 969
В статье 2006 года Macworld включил AppleScript в свой рейтинг 30 самых значимых продуктов Apple на сегодняшний день, поместив его на 17-е место. [8]
В статье для Macworld 2013 года ветеран-разработчик программного обеспечения для Mac и комментатор Джон Грубер завершил свои размышления о «маловероятной живучести AppleScript», отметив: «Теоретически AppleScript мог бы быть намного лучше; однако на практике это лучшее, что у нас есть и что работает. Это иллюстрирует преимущества Mac перед iOS для любителей и продвинутых пользователей». [9]
В октябре 2016 года давний менеджер по продукту AppleScript и евангелист автоматизации Сэл Согоян покинул Apple, когда его должность была ликвидирована «по деловым причинам». [10] Ветераны сообщества Mac, такие как Джон Грубер и Энди Игнатко, в целом отреагировали с беспокойством, поставив под сомнение приверженность Apple сообществу разработчиков и профессиональным пользователям. [11] Старший вице-президент Apple по разработке программного обеспечения Крейг Федериги ответил в электронном письме, заявив, что «Мы намерены продолжать нашу поддержку великолепных технологий автоматизации в macOS!», хотя Джефф Гамет из The Mac Observer высказал мнение, что это мало что сделало для того, чтобы развеять его сомнения относительно будущего автоматизации Apple в целом и AppleScript в частности. [12] На данный момент AppleScript остается одним из компонентов технологий автоматизации macOS, наряду с Automator , Shortcuts , Services и shell-скриптингом .
AppleScript был разработан для использования в качестве доступного языка сценариев для конечного пользователя, предлагая пользователям интеллектуальный механизм для управления приложениями, а также для доступа и изменения данных и документов. AppleScript использует события Apple , набор стандартизированных форматов данных, которые операционная система Macintosh использует для отправки информации приложениям, что примерно аналогично отправке запросов XPath через XML-RPC в мире веб-сервисов . [5] : xxvi События Apple позволяют сценарию работать с несколькими приложениями одновременно, передавая данные между ними, так что сложные задачи могут быть выполнены без участия человека. [4] Например, AppleScript для создания простой веб-галереи может делать следующее:
Для пользователя сотни или тысячи шагов в нескольких приложениях были сведены к одному действию запуска скрипта, и задача выполняется за гораздо меньшее время и без возможности случайной человеческой ошибки. Большой сложный скрипт может быть разработан для запуска только один раз, в то время как другие скрипты используются снова и снова.
Скриптовые элементы приложения видны в Scripting Dictionary приложения (распространяется как часть приложения), который можно просмотреть в любом редакторе скриптов. Элементы обычно группируются в наборы в соответствии с нестрогими функциональными связями между ними. В любом наборе присутствуют два основных типа элементов: классы и команды.
Все скриптовые приложения разделяют несколько базовых команд и объектов, обычно называемых стандартным набором — команды для открытия, закрытия или сохранения файла, для печати чего-либо, для выхода, для установки данных в переменные, а также базовый объект приложения , который дает скриптовые свойства самого приложения. Многие приложения имеют многочисленные наборы, способные выполнять любую задачу, которую может выполнять само приложение. В исключительных случаях приложения могут поддерживать плагины, которые включают их собственные скриптовые словари.
AppleScript был разработан с возможностью интуитивного создания скриптов путем записи действий пользователя. Такая возможность записи AppleScript должна быть встроена в приложение — приложение должно поддерживать события Apple и запись AppleScript; [13] поскольку Finder поддерживает запись AppleScript, это может быть полезно для справки. Когда открыт AppleScript Editor (Script Editor) и нажата кнопка Record, действия пользователя для записываемых приложений преобразуются в их эквивалентные команды AppleScript и выводятся в окно Script Editor. Полученный скрипт можно сохранить и повторно запустить, чтобы дублировать исходные действия, или изменить, чтобы он был более полезным в целом.
Комментарии можно делать несколькими способами. Однострочный комментарий может начинаться с 2 дефисов ( -- ). В AppleScript 2.0, впервые выпущенном в Mac OS X Leopard , он также может начинаться со знака номера (#). Это позволяет сохранять самостоятельный сценарий AppleScript как исполняемый текстовый файл, начинающийся со строки shebang. #!/usr/bin/osascript
Пример:
--Это однострочный комментарий # Так же и это! (в Mac OS X Leopard или более поздней версии)
Для комментариев, занимающих несколько строк, AppleScript использует скобки со звездочками внутри. Пример:
(* Это многострочный комментарий * )
В AppleScript традиционная программа «Hello, World!» может быть написана во многих различных формах, включая:
отобразить диалоговое окно «Привет, мир!» — модальное окно с кнопками «ОК» и «Отмена» — или отобразить оповещение «Привет, мир!» — модальное окно с одной кнопкой «ОК» и значком, представляющим приложение, отображающее оповещение — или сказать «Привет, мир!» — звуковое сообщение с использованием синтезированного компьютерного голоса
AppleScript имеет несколько параметров пользовательского интерфейса, включая диалоги, оповещения и списки вариантов. (Символ ¬, получаемый при вводе ⌥ Option+ returnв редакторе скриптов, обозначает продолжение одного оператора на нескольких строках.)
-- Диалоговое окно установлено dialogReply для отображения диалогового окна "Текст диалогового окна" ¬ ответ по умолчанию "Текстовый ответ" ¬ скрытый ответ false ¬ кнопки { "Пропустить" , "Хорошо" , "Отмена" } ¬ кнопка по умолчанию " Хорошо" ¬ кнопка отмены "Пропустить" ¬ с заголовком "Заголовок окна диалогового окна" ¬ со значком примечание ¬ отказ после 15
-- Выберите из списка set chosenListItem для выбора из списка { "A" , "B" , "3" } ¬ с заголовком "Заголовок списка" ¬ с подсказкой "Текст подсказки" ¬ элементы по умолчанию "B" ¬ название кнопки ОК "Выглядит хорошо!" ¬ название кнопки отмены "Нет, попробуйте еще раз" ¬ допускается множественный выбор false ¬ допускается пустой выбор
-- Оповещение установлено resultAlertReply для отображения оповещения "Текст оповещения" ¬ как предупреждение ¬ кнопки { "Пропустить" , " ОК" , "Отмена" } ¬ кнопка по умолчанию 2 ¬ кнопка отмены 1 ¬ отказ после 2
Каждый метод взаимодействия с пользователем может возвращать значения нажатых кнопок, выбранных элементов или введенного текста для дальнейшей обработки. Например:
вывести оповещение "Привет, мир!" кнопки { "Грубо отклонить" , "С радостью принять" } установить кнопку "Ответить " для возвращаемого результата , если ответ " С радостью принять", то подать звуковой сигнал 5 , иначе сказать "Чушь!" конец if
В то время как события Apple являются способом отправки сообщений в приложения, AppleScript является особым языком, разработанным для отправки событий Apple. В соответствии с целью простоты использования для новичков, язык AppleScript разработан на основе метафоры естественного языка , так же как графический пользовательский интерфейс разработан на основе метафоры рабочего стола . Хорошо написанный AppleScript должен быть достаточно понятным, чтобы его мог прочитать и понять любой, и легко редактировать. Язык в значительной степени основан на языке HyperTalk от HyperCard, расширенном для обозначения не только мира карт и стопок HyperCard, но и теоретически любого документа. С этой целью команда AppleScript представила объектную модель AppleEvent (AEOM), которая определяет объекты, которые «знает» любое конкретное приложение.
Сердце языка AppleScript — использование терминов, которые действуют как существительные и глаголы, которые можно комбинировать. Например, вместо другого глагола для печати страницы, документа или диапазона страниц (например, printPage, printDocument, printRange), AppleScript использует один глагол «print», который можно комбинировать с объектом, например, страницей, документом или диапазоном страниц.
распечатать страницу 1распечатать документ 2распечатать страницы 1–5 документа 2
В общем, AEOM определяет ряд объектов, например «документ» или «абзац», и соответствующие действия, например «вырезать» и «закрыть». Система также определяет способы ссылки на свойства объектов, поэтому можно ссылаться на «третий абзац документа «Добрый день»» или «цвет последнего слова переднего окна». AEOM использует словарь приложения для связывания событий Apple с понятными человеку терминами, позволяя осуществлять перевод между понятными человеку событиями AppleScript и байт-кода Apple. Чтобы узнать, какие элементы программы можно заскриптовать, можно просмотреть словари для поддерживаемых приложений. (В приложениях Xcode и Script Editor это находится в меню Файл → Открыть словарь .)
Чтобы указать, какое приложение должно быть целью такого сообщения, AppleScript использует конструкцию «tell»:
скажите приложению "Microsoft Word" выйти конец скажите
В качестве альтернативы, сказку можно выразить одной строкой, используя инфинитив :
сказать приложению "Microsoft Word " закрыть
Для событий в «Core Suite» (активация, открытие, повторное открытие, закрытие, печать и выход) приложение может быть указано как прямой объект для транзитивных команд:
закрыть приложение "Microsoft Word"
Концепцию иерархии объектов можно выразить с помощью вложенных блоков:
скажите приложению "QuarkXPress" скажите документу 1 скажите странице 2 скажите текстовому полю 1 установите слово 5 в "Apple" конец скажите конец скажите конец скажите конец скажите
Понятие иерархии объектов также может быть выражено с помощью вложенных предложных фраз или серии притяжательных местоимений:
пиксель 7 строки 3 изображения TIFF " моего битового массива" 7-й пиксель 3 - й строки изображения TIFF "моего битового массива "
что на другом языке программирования может быть выражено как последовательные вызовы методов , как в этом псевдокоде :
getTIFF ( "мое растровое изображение" ). getRow ( 3 ) .getPixel ( 7 );
AppleScript включает синтаксис для порядкового счета, "первый абзац", а также количественного, "абзац один". Аналогично, сами числа могут быть обозначены как текст или число, поддерживаются "пять", "пятый" и "5"; они являются синонимами в AppleScript. Кроме того, слово "the" может быть законно использовано в любом месте скрипта для улучшения читабельности: оно не влияет на функциональность скрипта.
Надежный калькулятор:
скажите приложению "Finder" -- Установите переменные установите the1 в возвращаемый текст ( отобразить диалоговое окно "1-й" ответ по умолчанию "Число здесь" кнопки { "Продолжить" } кнопка по умолчанию 1 ) установите the2 в возвращаемый текст ( отобразить диалоговое окно "2-й" ответ по умолчанию "Число здесь" кнопки { "Продолжить" } кнопка по умолчанию 1 ) попробуйте установите the1 в качестве целого числа установите the2 в качестве целого числа при ошибке отобразить диалоговое окно "В калькулятор можно вводить только числа." с заголовком "ОШИБКА" кнопки { "ОК" } кнопка по умолчанию 1 return end try -- Сложить? если кнопка вернула значение "Да" ( display dialog "Add?" buttons { "No" , "Yes" } default button 2 ) , то ответ устанавливается в значение ( the1 + the2 ), отобразить диалоговое окно с заголовком "Ответить" buttons { "OK" } default button 1 , то ответ -- Вычесть? иначе, если кнопка вернула значение "Да" ( display dialog "Subtract?" buttons { "No" , "Yes" } default button 2 ) , то ответ устанавливается в значение ( the1 - the2 ), отобразить диалоговое окно с заголовком "Ответить" buttons { "OK" } default button 1 , то ответ -- Умножить? иначе, если кнопка вернула значение "Да" ( display dialog "Multiply?" buttons { "No" , "Yes" } default button 2 ), то ответ устанавливается в значение ( the1 * the2 ) , отобразить диалоговое окно с заголовком " Ответить" buttons { "OK" } default button 1 , то ответ -- Разделить? в противном случае , если кнопка вернула ( отобразить диалоговое окно " Разделить?" кнопки { "Нет" ,"Да" } кнопка по умолчанию 2 ) - "Да" , затем установите ответ на ( the1 / the2 ) отобразите диалоговое окно с заголовком "Ответить" кнопки { "OK" } кнопка по умолчанию 1 say ans else delay 1 say "Вы не выбрали функцию. Операция отменена." end ifконец сказать
Простая последовательность диалогового окна имени пользователя и пароля . Здесь имя пользователя — John, а пароль — app123:
скажите приложению "Finder" установить passAns на "app123" установить userAns на "John" если текст , возвращенный из ( отобразить диалоговое окно "Имя пользователя" ответ по умолчанию "" ) это userAns то отобразить диалоговое окно "Вернуть" кнопки { "Продолжить" } кнопка по умолчанию 1 если текст , возвращенный из ( отобразить диалоговое окно "Имя пользователя : John" & return & "Пароль" ответ по умолчанию "" кнопки { "Продолжить" } кнопка по умолчанию 1 со скрытым ответом ) это passAns то отобразить диалоговое окно "Доступ предоставлен" кнопки { "OK" } кнопка по умолчанию 1 иначе отобразить диалоговое окно "Неверный пароль" кнопки { "OK" } кнопка по умолчанию 1 конец если иначе отобразить диалоговое окно "Неверное имя пользователя" кнопки { "OK" } кнопка по умолчанию 1 конец если конец сказать
Редакторы скриптов предоставляют унифицированную среду программирования для AppleScripts, включая инструменты для составления, проверки, компиляции, запуска и отладки скриптов. Они также предоставляют механизмы для открытия и просмотра словарей AppleScript из приложений, поддерживающих скрипты, сохранения скриптов в ряде форматов (скомпилированные файлы скриптов, пакеты приложений, пакеты скриптов и простые текстовые файлы) и обычно предоставляют такие функции, как подсветка синтаксиса и предварительно написанные фрагменты кода.
AppleScripts можно запускать из редактора скриптов, но обычно удобнее запускать скрипты напрямую, не открывая приложение редактора скриптов. Для этого есть несколько вариантов:
Повторно используемые модули AppleScript (доступны с OS X Mavericks ), написанные на AppleScript или AppleScriptObjC и сохраненные как файлы скриптов или пакеты в определенных местах, [28] которые могут быть вызваны из других скриптов. При сохранении в виде пакета библиотека может включать файл словаря AppleScript (sdef), [29] таким образом функционируя как дополнение к скрипту, но написанное на AppleScript или AppleScriptObjC.
Фреймворк для присоединения интерфейсов Cocoa к приложениям AppleScript, часть пакета Xcode в Mac OS X 10.4 и 10.5, теперь устарел в пользу AppleScriptObjC. [30] : 438
Фреймворк разработки программного обеспечения Cocoa , также называемый AppleScript/Objective-C или ASOC, [31] часть пакета Xcode со времен Mac OS X Snow Leopard . [32] AppleScriptObjC позволяет AppleScripts напрямую использовать классы и методы Cocoa. [33] В следующей таблице показана доступность AppleScriptObjC в различных версиях macOS: [34]
AppleScriptObjC можно использовать во всех последующих версиях Mac OS X.
Графическая, модульная среда редактирования, в которой рабочие процессы строятся из действий . Она предназначена для дублирования многих функций AppleScript без необходимости знания программирования. В Automator есть действие, специально разработанное для хранения и запуска AppleScripts, для задач, которые слишком сложны для упрощенной структуры Automator. [35]
Эти фоновые приложения, упакованные с macOS, используются для того, чтобы позволить AppleScript получить доступ к функциям, которые обычно не могут быть заскриптованы. Начиная с Mac OS X 10.6.3 они включают в себя заскриптованные приложения для:
Плагины для AppleScript, разработанные Apple или третьими лицами. [36] Они предназначены для расширения встроенного набора команд, расширяя возможности AppleScript и делая его несколько менее зависимым от функциональности, предоставляемой приложениями. macOS включает в себя набор дополнений к скриптам, называемых стандартными дополнениями ( StandardAdditions.osax ), которые добавляют набор команд и классов, не являющихся частью основных функций AppleScript, включая диалоги взаимодействия с пользователем, чтение и запись файлов, команды файловой системы, функции даты, а также текстовые и математические операции; без этого OSAX AppleScript не имел бы возможности выполнять многие основные действия, напрямую не предоставляемые приложением.
Хотя приложения могут определять специализированные классы (или типы данных), AppleScript также имеет ряд встроенных классов. Эти базовые классы данных напрямую поддерживаются языком и, как правило, универсально распознаются скриптовыми приложениями. Наиболее распространенными являются следующие:
tell application "Finder" …
).contents
свойству.pi
, tab
, и linefeed
.constant
.integer
.real
text
класс отличался от string
и Unicode text
, и эти три вели себя несколько по-разному; в 2.0 (10.5) и более поздних версиях они все являются синонимами, и весь текст обрабатывается как закодированный в UTF-16 (« Unicode »). [37]square yards
, а затем преобразовано в square feet
путем приведения типов единиц (с помощью as
оператора).Многие процессы AppleScript управляются блоками кода, где блок начинается с команды command и заканчивается оператором end command . Наиболее важные структуры описаны ниже.
AppleScript предлагает два вида условных операторов.
-- Простое условие , если x < 1000 , то присвоить x значение x + 1-- Составное условие , если x больше 3 , то -- команды, иначе -- другие команды заканчиваются , если
Цикл повтора AppleScript существует в нескольких немного отличающихся вариантах. Все они выполняют блок между строками повтора и конца повтора несколько раз. Цикл может быть преждевременно остановлен командой exit repeat .
Повторяйте вечно.
повторить -- команды, которые нужно повторить, конец повтора
Повторите заданное количество раз.
повторить 10 раз -- команды, которые нужно повторить , конец повтора
Условные циклы. Блок внутри цикла repeat while выполняется до тех пор, пока условие оценивается как истинное. Условие переоценивается после каждого выполнения блока. Цикл repeat until в остальном идентичен, но блок выполняется до тех пор, пока условие оценивается как ложное.
установить x на 5 повторять пока x > 0 установить x на x - 1 конец повторитьустановить x на 5 повторять пока x ≤ 0 установить x на x - 1 конец повторить
Цикл с переменной. При запуске цикла переменной присваивается начальное значение. После каждого выполнения блока к переменной добавляется необязательное значение шага. Значение шага по умолчанию равно 1.
-- повторить блок 2000 раз, i получает все значения от 1 до 2000 повторить с i от 1 до 2000 -- команды, которые нужно повторить конец повтора-- повторить блок 4 раза, i получает значения 100, 75, 50 и 25 повторить с i от 100 до 25 по - 25 -- команды, которые нужно повторить конец повтора
Перечислить список. На каждой итерации установить loopVariable на новый элемент в данном списке
установить total на 0 повторить с loopVariable в { 1 , 2 , 3 , 4 , 5 } установить total на total + loopVariable конец повтора
Одной из важных вариаций этой блочной структуры является форма on — end ... блоков, которые используются для определения обработчиков (функционально-подобных подпрограмм). Обработчики начинаются с on functionName() и заканчиваются end functionName и не выполняются как часть обычного потока скрипта, если только они не вызваны откуда-то из скрипта.
Обработчики также можно определить с помощью «to» вместо «on» и написать так, чтобы они принимали помеченные параметры, не заключенные в скобки.
В AppleScript существует четыре типа предопределенных обработчиков — запуск, открытие, бездействие и выход — каждый из которых создается таким же образом, как обработчик запуска, показанный выше.
при открытии Элементов повторить с этим Элементом в Элементах указать приложению "Finder" обновить этот Элемент конец повторить конец открыть
Когда скрипт, содержащий «обработчик открытия», сохраняется как апплет, апплет становится дроплетом. Дроплет можно определить в Finder по его значку, который включает стрелку, указывающую на то, что на значок можно перетаскивать элементы. Обработчик открытия дроплета выполняется, когда файлы или папки перетаскиваются на значок дроплета. Ссылки на элементы, перетаскиваемые на значок дроплета, передаются скрипту дроплета в качестве параметра обработчика открытия. Дроплет также можно запустить так же, как обычный апплет, выполнив его обработчик запуска.
при простое --код для выполнения после завершения выполнения скрипта return 60 -- количество секунд для паузы перед повторным выполнением обработчика простоя end idle
Обработчик простоя может использоваться в апплетах или дроплетах, сохраненных как апплеты с сохранением в открытом состоянии, и полезен для скриптов, которые отслеживают определенные данные или события. Продолжительность времени простоя по умолчанию составляет 30 секунд, [39], но ее можно изменить, включив оператор 'return x' в конец подпрограммы, где x — это количество секунд, которое система должна ждать перед повторным запуском обработчика.
on quit -- команды, которые необходимо выполнить перед завершением работы скрипта continue quit -- требуется для фактического завершения работы скрипта end quit
Объекты скрипта могут быть определены явно с использованием синтаксиса:
скрипт scriptName — команды и обработчики, специфичные для скрипта end script
Объекты скрипта могут использовать те же структуры 'tell', которые используются для объектов приложения, и могут быть загружены из файлов и сохранены в них. Время выполнения во время выполнения может быть сокращено в некоторых случаях с помощью объектов скрипта.
установить переменную1 на 1 — создать целочисленную переменную с именем variable1 установить переменную2 на "Hello" — создать текстовую переменную с именем variable2 копировать { 17 , "doubleday" } в переменную3 — создать переменную-список с именем variable3 установить { variable4 , variable5 } в variable3 — скопировать элементы списка variable3 в отдельные переменные variable4 и variable5 установить variable6 в script myScript — установить переменную в экземпляр скрипта
скажите приложению "Finder" установить x в myHandler ( ) -- или установите x в myHandler ( ) моего end tell на myHandler () --commands конец myHandler
Использование той же методики для написания команд добавления сценариев может уменьшить количество ошибок и повысить производительность.
скажите приложению "Finder" установить anyNumber на мой ( случайное число от 5 до 50 ) конец скажите
Важным аспектом реализации AppleScript является архитектура Open Scripting Architecture ( OSA ). [40] Apple предоставляет OSA для других языков сценариев и сторонних продуктов сценариев/автоматизации, таких как QuicKeys и UserLand Frontier, для функционирования на равных правах с AppleScript. AppleScript был реализован как компонент сценариев , и основные спецификации для сопряжения таких компонентов с OSA были общедоступными, что позволяло другим разработчикам добавлять свои собственные компоненты сценариев в систему. Открытые клиентские API для загрузки, сохранения и компиляции сценариев будут работать одинаково для всех таких компонентов, что также означало, что апплеты и дроплеты могли содержать сценарии на любом из этих языков сценариев.
Одной из особенностей OSA являются скриптовые дополнения, или OSAX для Open Scripting Architecture eXtension , [36], которые были вдохновлены внешними командами HyperCard. Скриптовые дополнения — это библиотеки , которые позволяют программистам расширять функции AppleScript. Команды, включенные в качестве скриптовых дополнений, доступны для всей системы и не зависят от приложения (см. также § Библиотеки AppleScript). Редактор AppleScript также может напрямую редактировать и запускать некоторые языки OSA.
В OS X Yosemite и более поздних версиях macOS компонент JavaScript for Automation ( JXA ) остается единственной серьезной альтернативой языку OSA AppleScript, [14] хотя версии Perl , Python , Ruby и Tcl для Macintosh поддерживают собственные средства работы с событиями Apple, не являясь компонентами OSA. [30] : 516
JXA также предоставляет интерфейс для иностранного языка Objective-C (и языка C). [14] Будучи средой, основанной на движке JavaScriptCore WebKit, набор функций JavaScript синхронизирован с движком браузера Safari. JXA предоставляет систему модулей JavaScript, а также возможно использовать модули CommonJS через браузерify. [41]
Язык сценариев AppleScript выделяется своей способностью вызывать несколько приложений, но не был разработан для выполнения функций, специфичных для конкретных задач. Так, например, вы не можете использовать AppleScript для эффективного выполнения интенсивных математических операций или длительной обработки текста. Однако вы можете использовать AppleScript в сочетании со скриптами оболочки, скриптами Perl и другими языками сценариев. Это позволяет вам работать с наиболее эффективным языком для поставленной задачи.