Введение
Язык сценариев для macOS
AppleScript — это язык сценариев, разработанный компанией Apple Inc., который упрощает автоматическое управление приложениями Mac, поддерживающими работу со сценариями. Впервые представленный в System 7, он в настоящее время входит в состав всех версий macOS как часть пакета инструментов автоматизации системы. Термин "AppleScript" может относиться к самому языку, к отдельному скрипту, написанному на этом языке, или, неформально, к архитектуре Open Scripting Architecture в macOS, лежащей в основе языка. Новички могли использовать HyperTalk для программирования стека HyperCard. Инженеры Apple осознали, что можно разработать аналогичный, но более объектно-ориентированный язык сценариев для использования с любым приложением, и проект AppleScript возник как ответвление от исследовательских усилий по модернизации Macintosh в целом и в конечном итоге стал частью System 7. AppleScript был выпущен в октябре 1993 года в составе System 7.1.1 (System 7 Pro, первое крупное обновление System 7) и предоставил AppleScript значительно больше контроля над самой операционной системой. В статье для Macworld в 2013 году опытный разработчик программного обеспечения для Mac и обозреватель Джон Грубер завершил свои размышления о "неожиданной живучести AppleScript", отметив: "В теории AppleScript мог бы быть намного лучше; на практике же это лучшее, что у нас есть и что работает. Он демонстрирует преимущества Mac перед iOS для любителей и продвинутых пользователей". В октябре 2016 года Сал Согхоян, давний менеджер продукта AppleScript и сторонник автоматизации, покинул Apple, когда его должность была упразднена "по причинам бизнеса". Ветераны сообщества Mac, такие как Джон Грубер и Энди Ихнатко, в основном отреагировали с обеспокоенностью, поставив под сомнение приверженность Apple сообществу разработчиков и профессиональных пользователей. Старший вице-президент Apple по разработке программного обеспечения Крейг Федериги ответил по электронной почте, заявив, что "Мы намерены продолжать поддерживать отличные технологии автоматизации в macOS!", хотя Джефф Гамет из The Mac Observer предположил, что это мало что дало для рассеивания его сомнений относительно будущего автоматизации Apple в целом и AppleScript в частности. На данный момент AppleScript остается одним из компонентов технологий автоматизации macOS, наряду с Automator, Shortcuts, Services и скриптами оболочки.
Основные понятия
AppleScript был разработан как легкодоступный язык сценариев для конечных пользователей, предоставляя им интеллектуальный механизм для управления приложениями, а также для доступа к данным и их изменения в документах. AppleScript использует события Apple – набор стандартизированных форматов данных, которые операционная система Macintosh использует для передачи информации приложениям, что примерно аналогично отправке XPath-запросов через XML RPC в мире веб-сервисов. Поскольку Finder поддерживает запись AppleScript, он может служить полезным справочным материалом. Когда AppleScript Editor (Редактор сценариев) открыт и нажата кнопка «Запись», действия пользователя в записываемых приложениях преобразуются в соответствующие команды AppleScript и выводятся в окно Редактора сценариев. Полученный сценарий можно сохранить и повторно запустить для воспроизведения исходных действий или изменить для более широкого применения.
Редакторы сценариев
Редакторы сценариев предоставляют унифицированную среду программирования для AppleScript, включающую инструменты для создания, проверки, компиляции, запуска и отладки сценариев. Они также обеспечивают возможность открытия и просмотра словарей AppleScript из скриптируемых приложений, сохранения сценариев в различных форматах (скомпилированные файлы сценариев, пакеты приложений, пакеты скриптов и обычные текстовые файлы), и, как правило, предлагают такие функции, как подсветка синтаксиса и готовые фрагменты кода.
От Apple
AppleScript Editor (Скрипт-редактор) Редактор AppleScript, поставляемый с macOS, называемый AppleScript Editor в Mac OS X Snow Leopard (10.6) – OS X Mavericks (10.9) и Script Editor во всех более ранних и поздних версиях macOS. Скрипты пишутся в окнах редактирования документов, где их можно компилировать и запускать. Эти окна содержат различные панели, отображающие информацию журнала, результаты выполнения и другие данные для отладки. Доступ к словарям скриптов и готовым фрагментам кода предоставляется через меню приложений. Начиная с OS X Yosemite (10.10), Script Editor поддерживает написание скриптов как на AppleScript, так и на JavaScript. Smile – бесплатная среда разработки, ориентированная в первую очередь на AppleScript. SmileLab – коммерческое программное обеспечение с расширенными функциями для численного анализа, построения графиков, автоматизации оборудования и веб-разработки. Smile и SmileLab используют различные типы окон: окна AppleScript для запуска и сохранения полных скриптов, терминалы AppleScript для пошагового тестирования кода, окна Unicode для работы с текстом и XML. Пользователи могут создавать сложные интерфейсы – диалоговые окна – для ситуаций, когда встроенных диалогов AppleScript недостаточно. ASObjC Explorer 4, от Shane Stanley – устаревшая коммерческая IDE стороннего разработчика для AppleScript, особенно для AppleScriptObjC. Основная функция – ведение журнала объектов/событий Cocoa, отладка и автозавершение кода. Пользователи могут просматривать события и объекты Cocoa, как и другие скриптируемые приложения. Изначально этот инструмент был разработан для AppleScript Libraries (доступны в OS X Mavericks). AppleScript Libraries предназначены для повторного использования компонентов AppleScript и поддерживают встроенные словари AppleScript (sdef). ASObjC Explorer 4 также может использоваться как внешний редактор скриптов Xcode. FaceSpan, от Late Night Software – устаревшая коммерческая IDE стороннего разработчика для создания приложений AppleScript с графическим пользовательским интерфейсом.
Запускатели скриптов
AppleScripts можно запускать из редактора сценариев, но обычно удобнее запускать сценарии напрямую, без открытия приложения редактора сценариев. Существует несколько способов это сделать:
Applets (Апплеты) AppleScripts можно сохранять из редактора сценариев в виде приложений (называемых апплетами или «каплями», если они принимают ввод перетаскиванием). Действия папки можно назначить, щелкнув по папке и выбрав «Настройка действий папки» из контекстного меню; расположение этой команды немного отличается в Mac OS X 10.6.x от более ранних версий. Того же результата можно добиться с помощью сторонних утилит, таких как Hazel. Запуск с помощью горячих клавиш Клавиатурные сочетания можно назначить AppleScripts в меню сценариев через панель «Клавиатура и мышь» в Системных настройках. Кроме того, доступны различные сторонние утилиты — Alfred, FastScripts, Keyboard Maestro, QuicKeys, Quicksilver, TextExpander — которые могут запускать AppleScripts по требованию с использованием комбинаций клавиш. Меню сценариев Это общесистемное меню обеспечивает доступ к AppleScripts из меню macOS, которое видно независимо от того, какое приложение активно. (Кроме того, многие приложения Apple, некоторые сторонние приложения и некоторые расширения предоставляют собственные меню сценариев. Они могут быть активированы разными способами, но все они работают примерно одинаково.) Выбор скрипта в меню сценариев запускает его. Начиная с Mac OS X 10.6.x, общесистемное меню сценариев можно включить в настройках редактора сценариев; в предыдущих версиях Mac OS X это можно было сделать в приложении «AppleScript Utility». При первом включении меню сценариев отображает библиотеку по умолчанию, содержащую довольно общие и функциональные AppleScripts, которые также можно открыть в редакторе сценариев и использовать в качестве примеров для изучения AppleScript. Скрипты можно организовать так, чтобы они появлялись в меню только при активном состоянии определенных приложений. AppleScripts можно запускать из командной строки Unix или из launchd для выполнения запланированных задач. Инструмент osascript может запускать скомпилированные скрипты (.scpt файлы) и текстовые файлы (.applescript файлы — они компилируются инструментом во время выполнения). Скриптовые приложения можно запускать с помощью команды Unix `open`.
Библиотеки AppleScript
Повторно используемые модули AppleScript (доступны начиная с OS X Mavericks), написанные на AppleScript или AppleScriptObjC и сохраненные как файлы скриптов или пакеты в определенных папках, которые можно вызывать из других скриптов. При сохранении в виде пакета библиотека может содержать файл словаря AppleScript (sdef), что позволяет ей функционировать как расширение для скриптов, но реализованное на AppleScript или AppleScriptObjC.
AppleScript Studio (всего один экземпляр)
Фреймворк для подключения интерфейсов Cocoa к приложениям AppleScript, входящий в состав пакета Xcode в Mac OS X 10.4 и 10.5, в настоящее время не рекомендуется к использованию и заменен на AppleScriptObjC.
AppleScriptObjC (включает в себя)
Фреймворк разработки Cocoa, также известный как AppleScript/Objective C или ASOC, является частью пакета Xcode начиная с Mac OS X Snow Leopard. AppleScriptObjC позволяет скриптам AppleScript напрямую использовать классы и методы Cocoa. В следующей таблице показана доступность AppleScriptObjC в различных версиях macOS:
+ Where AppleScriptObjC can be used in each macOS version In Xcode In applets In AppleScriptLibraries In Script Editor 10.6 10.7 10.8 10.9 10.10
AppleScriptObjC can be used in all subsequent Mac OS X versions.
+ Где AppleScriptObjC можно использовать в каждой версии macOS | В Xcode | В апплетах | В AppleScriptLibraries | В Script Editor
10.6 | | | |
10.7 | | | |
10.8 | | | |
10.9 | | | |
10.10 | | | |
+ Where AppleScriptObjC can be used in each macOS version In Xcode In applets In AppleScriptLibraries In Script Editor 10.6 10.7 10.8 10.9 10.10
AppleScriptObjC can be used in all subsequent Mac OS X versions.
AppleScriptObjC можно использовать во всех последующих версиях macOS.
+ Where AppleScriptObjC can be used in each macOS version In Xcode In applets In AppleScriptLibraries In Script Editor 10.6 10.7 10.8 10.9 10.10
AppleScriptObjC can be used in all subsequent Mac OS X versions.
Автоматический
Графическая модульная среда редактирования, в которой рабочие процессы формируются из отдельных действий. Она создана для воспроизведения многих функций AppleScript, не требуя навыков программирования. Automator содержит специальное действие для включения и запуска AppleScript для задач, которые слишком сложны для его упрощенной структуры.
Дополнения скриптов (OSAX)
Плагины для AppleScript, разработанные Apple или сторонними разработчиками. Они предназначены для расширения встроенного набора команд, увеличивая возможности AppleScript и снижая его зависимость от функциональности, предоставляемой приложениями. macOS включает в себя набор скриптовых дополнений, известных как Стандартные дополнения (StandardAdditions. osax), которые добавляют команды и классы, не входящие в основной функционал AppleScript, такие как диалоговые окна для взаимодействия с пользователем, чтение и запись файлов, команды файловой системы, функции работы с датами, а также текстовые и математические операции. Без этого OSAX AppleScript не смог бы выполнять многие базовые действия, которые не предоставляются непосредственно приложениями.
Языковые структуры
Многие процессы AppleScript управляются блоками кода, где блок начинается с команды и заканчивается оператором end. Наиболее важные структуры описаны ниже.
Архитектура открытого скриптования
Важным аспектом реализации AppleScript является Open Scripting Architecture (OSA). Apple предоставляет OSA для других языков сценариев и сторонних продуктов для скриптинга и автоматизации, таких как QuicKeys и UserLand Frontier, чтобы они могли работать наравне с AppleScript. AppleScript был реализован как скриптовый компонент, а базовые спецификации для взаимодействия таких компонентов с OSA были открытыми, что позволило другим разработчикам добавлять свои собственные скриптовые компоненты в систему. Общие клиентские API для загрузки, сохранения и компиляции скриптов работали бы одинаково для всех этих компонентов, что также означало, что апплеты и дроплеты могли содержать скрипты, написанные на любом из этих языков сценариев. Одной из особенностей OSA являются расширения для скриптов, или OSAX (Open Scripting Architecture eXtension), хотя версии Perl, Python, Ruby и Tcl для Macintosh поддерживают собственные средства работы с событиями Apple без использования компонентов OSA.