AppleScript - AppleScript

AppleScript
Логотип редактора AppleScript.png
ПарадигмаПрограммирование на естественном языке, Сценарии
РазработчикApple Inc.
Впервые появился1993; 27 лет назад (1993)
Стабильный выпуск
2.5 / 16 октября 2014 г.; 6 лет назад (2014-10-16)[1]
Печатная дисциплинаСлабый, динамичный
Операционные системыСистема 7, Mac OS 8, Mac OS 9, macOS
ЛицензияПроприетарный (детали доступны по APSL )
Расширения имени файла.scpt, .scptd, .applescript
Интернет сайтhttps://developer.apple.com/applescript
Под влиянием
Естественный язык, HyperTalk

AppleScript это язык сценариев создан Apple Inc. что облегчает автоматический контроль над скриптами Mac Приложения. Впервые введено в Система 7, в настоящее время он включен во все версии macOS в составе пакета средств системной автоматизации.[2][3] Термин «AppleScript» может относиться к самому языку, к отдельному сценарию, написанному на этом языке, или, неофициально, к macOS. Открытая архитектура сценариев это лежит в основе языка.[2][3]

Обзор

AppleScript - это в первую очередь язык сценариев, разработанный Apple для взаимодействие между приложениями (IAC) с использованием События Apple.[2][3] AppleScript связан с событиями Apple, но отличается от них. События Apple предназначены для обмена данными между другими приложениями и управления ими с целью автоматизации повторяющихся задач.

AppleScript имеет собственные возможности обработки, помимо отправки и получения событий Apple в приложениях. AppleScript может выполнять базовые вычисления и обработку текста, а также является расширяемым, что позволяет использовать дополнения к сценариям которые добавляют в язык новые функции. Однако в основном AppleScript полагается на функциональность приложений и процессов для обработки сложных задач. Как структурированный командный язык, AppleScript можно сравнить с Оболочки Unix, то Microsoft Хост сценариев Windows, или IBM REXX в своей цели,[нужна цитата ] но он отличается от всех трех. Существенным для его функциональности является то, что приложения Macintosh публикуют «словари» адресуемых объектов и операций.

AppleScript имеет некоторые элементы процедурное программирование, объектно-ориентированного программирования (особенно при создании скриптовых объектов) и программирование на естественном языке тенденций в своем синтаксисе, но строго не соответствует ни одному из этих парадигмы программирования.[3]:xxvi

История

В конце 1980-х годов Apple рассматривала возможность использования HyperCard с HyperTalk язык сценариев как стандартный язык для разработка для конечных пользователей по всей компании и в ее классическая Mac OS операционная система и для межпроцессного взаимодействия между продуктами Apple и не Apple.[4] Новички могут использовать HyperTalk для программирования стека HyperCard. Инженеры Apple осознали, что аналогичный, но более объектно-ориентированный язык сценариев может быть разработан для использования с любым применение, а проект AppleScript родился как побочный продукт исследовательских усилий по модернизации Macintosh в целом и, наконец, стал частью Система 7.[5]

AppleScript был выпущен в октябре 1993 года как часть System 7.1.1 (System 7 Pro, первое крупное обновление до System 7).[5] QuarkXPress (версия 3.2) было одним из первых крупных программных приложений, поддерживающих AppleScript. Это, в свою очередь, привело к тому, что AppleScript получил широкое распространение в издательском и допечатном мире, часто объединяя сложные рабочие процессы. Это был ключевой фактор в сохранении доминирующего положения Macintosh в издательском деле и допечатной подготовке даже после того, как QuarkXpress и другие издательские приложения были перенесены на Microsoft Windows.

После некоторой неуверенности относительно будущего AppleScript в ОС следующего поколения Apple, переход на Mac OS X (около 2002 г.) и его Какао фреймворки значительно повысили полезность и гибкость AppleScript. Приложения какао позволяют разработчикам приложений с минимальными усилиями реализовывать базовые сценарии для своих приложений, расширяя количество приложений, которые могут быть напрямую доступны для сценариев. В то же время переход на основы Unix и способность AppleScript запускать команды Unix напрямую с сделать сценарий оболочки команда[6] позволил AppleScripts гораздо больший контроль над самой операционной системой.[3]:863 AppleScript Studio, выпущенный с Mac OS X 10.2 как часть Xcode, и позже AppleScriptObjC framework, выпущенный в Mac OS X 10.6, позволил пользователям создавать приложения Какао с помощью AppleScript.[3]:969

В статье 2006 г. Macworld включил AppleScript в свой рейтинг из 30 самых значимых продуктов Apple на сегодняшний день, поместив его на 17-е место.[7]

В статье 2013 г. Macworld, ветеран программного обеспечения для Mac и комментатор Джон Грубер завершил свое размышление о «маловероятной стойкости AppleScript», отметив: «Теоретически AppleScript мог бы быть намного лучше; на практике, однако, это лучшее, что у нас есть, что работает. Он демонстрирует преимущества Mac перед iOS для мастеров и опытных пользователей ".[8]

В октябре 2016 года давний менеджер по продукту AppleScript и евангелист автоматизации. Сал Согоян покинул Apple, когда его уволили "по деловым причинам".[9] Ветераны сообщества Mac, такие как Джон Грубер и Энди Игнатко в целом ответил с беспокойством, поставив под сомнение приверженность Apple сообществу разработчиков и профессиональным пользователям.[10] Старший вице-президент Apple по разработке программного обеспечения Крейг Федериги ответил в электронном письме, сказав, что «У нас есть все намерения продолжить нашу поддержку отличных технологий автоматизации в macOS!», хотя Джефф Гамет из Наблюдатель Mac высказал мнение, что это мало развеяло его сомнения относительно будущего автоматизации Apple в целом и AppleScript в частности.[11] В настоящее время AppleScript остается одним из компонентов технологий автоматизации macOS, наряду с Сервисы, Автомат, и сценарии оболочки.

Базовые концепты

AppleScript был разработан для использования в качестве доступного языка сценариев для конечных пользователей, предлагая пользователям интеллектуальный механизм для управления приложениями, а также для доступа и изменения данных и документов. AppleScript использует События Apple, набор стандартизированных форматов данных, которые операционная система Macintosh использует для отправки информации в приложения, примерно аналогично отправке XPath запросы по XML-RPC в мире веб-сервисы.[3]:xxvi События Apple позволяют сценарию работать с несколькими приложениями одновременно, передавая данные между ними, так что сложные задачи могут выполняться без вмешательства человека.[2] Например, AppleScript для создания простой веб-галереи может делать следующее:

  1. Откройте фотографию в приложении для редактирования фотографий (отправив этому приложению Открыть файл Событие Apple).
  2. Скажите приложению для редактирования фотографий манипулировать изображением (например, уменьшить его разрешение, добавить границу, добавить фото)
  3. Сообщите приложению для редактирования фотографий, что нужно сохранить измененное изображение в файле в другой папке (отправив этому приложению Сохранить и / или близко Событие Apple).
  4. Отправьте новый путь к файлу (через другое событие Apple) в текстовый редактор или приложение веб-редактора
  5. Скажите этому приложению-редактору, чтобы оно записало ссылку на фотографию в файл HTML.
  6. Повторите описанные выше действия для всей папки изображений (сотен или даже тысяч фотографий).
  7. Загрузите HTML-файл и папку с исправленными фотографиями на веб-сайт, отправив события Apple в графическое FTP клиент, используя встроенные команды AppleScript или отправляя события Apple в утилиты Unix FTP.

Для пользователя сотни или тысячи шагов в нескольких приложениях были сведены к одному действию запуска сценария, и задача решается за гораздо меньшее время и без возможности случайной человеческой ошибки. Большой сложный сценарий может быть разработан для запуска только один раз, тогда как другие сценарии используются снова и снова.

Скриптовые элементы приложения видны в Scripting Dictionary приложения (распространяется как часть приложения), который можно просмотреть в любом редактор сценария. Элементы обычно сгруппированы в люксы, по слабым функциональным связям между ними. В любом наборе есть два основных типа элементов: классы и команды.

  • Классы являются объектами с возможностью создания сценариев - например, приложение для редактирования текста почти наверняка будет иметь классы для окон, документов и текстов - и эти классы будут иметь свойства, которые можно изменять (размер окна, цвет фона документа, размер шрифта текста и т. д.), и может содержать другие классы (окно будет содержать один или несколько документов, документ будет содержать текст, текстовый объект будет содержать абзацы, слова и символы).
  • Команды, напротив, это инструкции, которые могут быть даны объектам, допускающим скрипты. Общий формат блока AppleScript: сказать объект с возможностью сценария для запуска команды.

Все приложения с поддержкой сценариев используют несколько основных команд и объектов, обычно называемых Standard Suite - команды для открытия, закрытия или сохранения файла, для печати чего-либо, для выхода, для установки данных в переменные, а также для основных применение объект, который дает скрипт-свойства самого приложения. Многие приложения имеют множество наборов, способных выполнять любую задачу, которую может выполнить само приложение. В исключительных случаях приложения могут поддерживать плагины, которые включают собственные словари сценариев.

AppleScript был разработан с возможностью интуитивно создавать сценарии путем записи действий пользователя. Возможность записи AppleScript должна быть встроена в приложение - приложение должно поддерживать события Apple и запись AppleScript;[12] поскольку Finder поддерживает запись AppleScript, он может быть полезен для справки. Когда Редактор AppleScript (Редактор скриптов) открыт и нажата кнопка «Запись», действия пользователя для записываемых приложений преобразуются в их эквивалентные команды AppleScript и выводятся в окно редактора скриптов. Результирующий сценарий можно сохранить и повторно запустить для дублирования исходных действий или изменить, чтобы он был более полезным.

Комментарии

Комментарии можно делать разными способами. Однострочный комментарий может начинаться с двух дефисов (--). В AppleScript 2.0, впервые выпущенном в Mac OS X Leopard, он также может начинаться со знака числа (#). Это позволяет хранить автономный сценарий AppleScript в виде исполняемого текстового файла, начинающегося с линия шебанг #! / usr / bin / osascriptПример:

--Это однострочный комментарий# Так это! (в Mac OS X Leopard или новее)

Для комментариев, занимающих несколько строк, AppleScript использует круглые скобки со звездочками внутри. Пример:

(* Этомножественныйлиниякомментарий *)

Привет мир!

В AppleScript традиционный "Привет мир!" программа может быть записан в разных формах, в том числе:

диалог отображения "Привет мир!" - модальное окно с кнопками «ОК» и «Отмена»-- илиотображение предупреждения "Привет мир!" - модальное окно с единственной кнопкой «ОК» и значком, представляющим приложение, отображающее предупреждение-- илисказать "Привет мир!" - звуковое сообщение с использованием синтезированного компьютерного голоса

AppleScript имеет несколько параметров пользовательского интерфейса, включая диалоговые окна, предупреждения и список вариантов. (Символ ¬, полученный путем ввода ⌥ Вариант+вернуть в редакторе сценариев означает продолжение одного оператора на нескольких строках.)

- Диалогнабор dialogReply к диалог отображения «Текст диалога» ¬	по умолчанию ответ "Текстовый ответ" ¬	скрытый ответ ложный ¬	кнопки {"Пропускать", "Ладно", "Отмена"} ¬	по умолчанию кнопка "Ладно" ¬	Отмена кнопка "Пропускать" ¬	с участием заглавие "Заголовок диалогового окна" ¬	с участием икона Примечание ¬	давая вверх после 15
- Выбрать из списканабор selectedListItem к выберите из списка {"А", "B", "3"} ¬	с участием заглавие "Заголовок списка" ¬	с участием незамедлительный "Быстрый текст" ¬	по умолчанию Предметы "B" ¬	ОК кнопка имя "Выглядит неплохо!" ¬	Отмена кнопка имя "Нет, попробуйте еще раз" ¬	множественный выбор позволил ложный ¬	с участием пустой отбор позволил
 - Предупреждениенабор resultAlertReply к отображение предупреждения «Текст предупреждения» ¬	так как предупреждение ¬	кнопки {"Пропускать", "Ладно", "Отмена"} ¬	по умолчанию кнопка 2 ¬	Отмена кнопка 1 ¬	давая вверх после 2

Каждый метод взаимодействия с пользователем может возвращать значения нажатых кнопок, выбранных элементов или введенного текста для дальнейшей обработки. Например:

отображение предупреждения "Привет мир!" кнопки {"Грубый отказ", "С радостью приму"}набор ответ к кнопка вернулась из то результатесли ответ является "С радостью приму" тогда	писк 5еще	сказать "Пиффл!"конец если

Метафора естественного языка

В то время как события Apple - это способ отправки сообщений в приложения, AppleScript - это особый язык, разработанный для отправки событий Apple. В соответствии с целью простоты использования для новичков, язык AppleScript разработан на естественный язык метафора, так же как графический интерфейс пользователя разработан на метафора рабочего стола. Хорошо написанный AppleScript должен быть достаточно ясным, чтобы его мог прочитать и понять любой, а также легко редактировать. Этот язык в значительной степени основан на языке HyperCard HyperTalk, расширенном для обозначения не только мира карт и стопок HyperCard, но и теоретически любого документа. С этой целью команда AppleScript представила Объектная модель AppleEvent (AEOM), который определяет объекты, "известные" любому конкретному приложению.

В основе языка AppleScript лежит использование терминов, которые действуют как существительные и глаголы, которые можно комбинировать. Например, вместо другого глагола для печати страницы, документа или диапазона страниц (например, printPage, printDocument, printRange) AppleScript использует один глагол «print», который можно комбинировать с объектом, таким как страница, документ или диапазон страниц.

Распечатать страница 1Распечатать документ 2Распечатать страницы 1 через 5 из документ 2

Как правило, AEOM определяет ряд объектов, таких как «документ» или «абзац», и соответствующие действия, такие как «вырезать» и «закрыть». Система также определяет способы обращения к свойствам объектов, поэтому можно ссылаться на «третий абзац документа« Добрый день »» или «цвет последнего слова лицевого окна». AEOM использует приложение толковый словарь связывать события Apple с понятными для человека терминами, позволяя осуществлять перевод между понятным человеком AppleScript и байт-код События Apple. Чтобы узнать, какие элементы программы поддерживают сценарии, можно просмотреть словари для поддерживаемых приложений. (В Xcode и Редактор скриптов приложений, это находится под Файл → Открыть словарь.)

Чтобы указать, какое приложение должно быть целью такого сообщения, AppleScript использует конструкцию "tell":

сказать применение "Microsoft Word"  уволитьсяконец сказать

В качестве альтернативы, жест может быть выражен в одной строке с помощью инфинитив:

сказать применение "Microsoft Word" к уволиться

Для событий в «Core Suite» (активация, открытие, повторное открытие, закрытие, печать и выход) приложение может поставляться как прямой объект переходным командам:

уволиться применение "Microsoft Word"

Понятие объекта иерархия можно выразить вложенными блоками:

сказать применение «QuarkXPress»  сказать документ 1    сказать страница 2      сказать текст коробка 1        набор слово 5 к "Яблоко"      конец сказать    конец сказать  конец сказатьконец сказать

Понятие объекта иерархия также может быть выражено с помощью вложенных предложные фразы:

пиксель 7 из ряд 3 из TIFF образ "мое растровое изображение"

который в другом язык программирования можно выразить как последовательные вызовы методов, как в этом псевдокод:

getTIFF("мое растровое изображение").getRow(3).getPixel(7);

AppleScript включает синтаксис для порядкового подсчета «первый абзац», а также кардинальный «первый абзац». Точно так же сами числа могут упоминаться как текстовые или числовые, поддерживаются «пять», «пятое» и «5»; они являются синонимами в AppleScript. Кроме того, слово «the» можно законно использовать в любом месте сценария для улучшения читаемости: оно не влияет на функциональность сценария.

Примеры скриптов

Калькулятор отказоустойчивости:

сказать применение "Искатель"	- Установить переменные	набор the1 к текст возвращен из (диалог отображения "1-й" по умолчанию ответ "Номер здесь" кнопки {"Продолжать"} по умолчанию кнопка 1)	набор 2 к текст возвращен из (диалог отображения "2-й" по умолчанию ответ "Номер здесь" кнопки {"Продолжать"} по умолчанию кнопка 1)	пытаться		набор the1 к the1 так как целое число		набор 2 к 2 так как целое число	на ошибка		диалог отображения «В калькулятор можно вводить только числа». с участием заглавие "ОШИБКА" кнопки {"ОК"} по умолчанию кнопка 1		вернуть	конец пытаться		-- Добавить?	если то кнопка вернулась из (диалог отображения "Добавить?" кнопки {"Нет", "Да"} по умолчанию кнопка 2) является "Да" тогда		набор ответ к (the1 + 2)		диалог отображения ответ с участием заглавие "Ответ" кнопки {"ОК"} по умолчанию кнопка 1		сказать ответ	- Вычесть?	еще если то кнопка вернулась из (диалог отображения "Вычесть?" кнопки {"Нет", "Да"} по умолчанию кнопка 2) является "Да" тогда		набор ответ к (the1 - 2)		диалог отображения ответ с участием заглавие "Ответ" кнопки {"ОК"} по умолчанию кнопка 1		сказать ответ	- Умножить?	еще если то кнопка вернулась из (диалог отображения "Умножить?" кнопки {"Нет", "Да"} по умолчанию кнопка 2) является "Да" тогда		набор ответ к (the1 * 2)		диалог отображения ответ с участием заглавие "Ответ" кнопки {"ОК"} по умолчанию кнопка 1		сказать ответ	-- Делить?	еще если то кнопка вернулась из (диалог отображения "Делить?" кнопки {"Нет", "Да"} по умолчанию кнопка 2) является "Да" тогда		набор ответ к (the1 / 2)		диалог отображения ответ с участием заглавие "Ответ" кнопки {"ОК"} по умолчанию кнопка 1		сказать ответ	еще		задержка 1		сказать «Вы не выбрали функцию. Операция отменена».	конец если	конец сказать

Просто имя пользователя и пароль последовательность диалогового окна. Здесь имя пользователя - John, а пароль - app123:

сказать применение "Искатель"	набор проходы к "app123"	набор userAns к "Джон"	если то текст возвращен из (диалог отображения "Имя пользователя" по умолчанию ответ "") является userAns тогда		диалог отображения "Правильный" кнопки {"Продолжать"} по умолчанию кнопка 1		если то текст возвращен из (диалог отображения "Имя пользователя: Джон" & вернуть & "Пароль" по умолчанию ответ "" кнопки {"Продолжать"} по умолчанию кнопка 1 с участием скрытый ответ) является PassAns тогда			диалог отображения "Доступ разрешен" кнопки {"ОК"} по умолчанию кнопка 1		еще			диалог отображения "Неверный пароль" кнопки {"ОК"} по умолчанию кнопка 1		конец если	еще		диалог отображения «Неверное имя пользователя» кнопки {"ОК"} по умолчанию кнопка 1	конец есликонец сказать

Инструменты разработки

Редакторы скриптов

Редакторы сценариев предоставляют унифицированную среду программирования для сценариев AppleScripts, включая инструменты для составления, проверки, компиляции, выполнения и отладки сценариев. Они также предоставляют механизмы для открытия и просмотра словарей AppleScript из приложений с поддержкой сценариев, сохранения сценариев в нескольких форматах (скомпилированные файлы сценариев, пакеты приложений, пакеты сценариев и простые текстовые файлы) и обычно предоставляют такие функции, как подсветка синтаксиса и заранее написанные фрагменты кода.

От Apple

Редактор AppleScript (Редактор скриптов)
Редактор AppleScript, входящий в состав macOS, называется Редактор AppleScript в Mac OS X Снежный барс (10.6) через OS X Mavericks (10.9) и Редактор скриптов во всех более ранних и поздних версиях macOS. Сценарии написаны в окнах редактирования документов, где они могут быть скомпилированы и запущены, и эти окна содержат различные панели, в которых записанная информация, результаты выполнения и другая информация доступна для целей отладки. Доступ к словарям сценариев и заранее написанным фрагментам кода доступен через меню приложения. поскольку OS X Йосемити (10.10), редактор сценариев включает возможность писать как на AppleScript, так и на JavaScript.[13]
Xcode
Набор инструментов для разработки приложений с функциями редактирования сценариев AppleScripts или создания полноценных приложений, написанных с помощью AppleScript.

От третьих лиц

Отладчик скриптов, от ПО для поздней ночи
Сторонняя коммерческая IDE для AppleScript. Отладчик сценариев - это более продвинутая среда AppleScript, которая позволяет автору сценария отлаживать сценарии AppleScripts с помощью одного шагающий, контрольные точки, переход к функциям / подпрограммам и выход из них, отслеживание переменных и т. д. Script Debugger также содержит расширенный браузер словарей, который позволяет пользователю видеть словарь в действии в реальных ситуациях. То есть, а не просто список того, что охватывает словарь, можно открыть документ в Страницы, например, и посмотрите, как термины словаря применяются к этому документу, что упрощает определение того, какие части словаря использовать. Отладчик сценариев не предназначен для создания сценариев с графическим интерфейсом пользователя, кроме базовых предупреждений и диалогов, а больше ориентирован на кодирование и отладку сценариев.
Улыбка и SmileLab
Сторонняя бесплатная / коммерческая IDE для AppleScript, полностью написанная на AppleScript.[14] Smile бесплатна и предназначена в первую очередь для разработки AppleScript. SmileLab - коммерческое программное обеспечение с обширными дополнениями для численного анализа, построения графиков, автоматизации машин и веб-производства. Smile и SmileLab используют набор различных окон: окна AppleScript для запуска и сохранения полных сценариев, терминалы AppleScript для построчного тестирования кода, окна Unicode для работы с текстом и XML. Пользователи могут создавать сложные интерфейсы, называемые диалогами, для ситуаций, когда встроенных диалогов в AppleScript недостаточно.
ASObjC Explorer 4 от Шейна Стэнли
Прекращенная сторонняя коммерческая IDE для AppleScript, особенно для AppleScriptObjC.[15] Основная особенность - Какао -объект / регистрация событий, отладка и завершение кода. Пользователи могут читать события и объекты Какао, как и другие приложения с поддержкой сценариев. Этот инструмент изначально был создан для Библиотеки AppleScript (доступно в OS X Mavericks ). Библиотеки AppleScript предназначены для повторно используемых компонентов AppleScript и поддерживают встроенный словарь AppleScript (sdef). ASObjC Explorer 4 также может быть внешним редактором сценариев Xcode.
FaceSpan, от ПО для поздней ночи
Прекращенная сторонняя коммерческая IDE для создания приложений AppleScript с графическим пользовательским интерфейсом.[16]

Пусковые установки скриптов

AppleScripts можно запускать из редактора сценариев, но обычно удобнее запускать сценарии напрямую, не открывая приложение-редактор сценариев. Для этого есть несколько вариантов:

Апплеты
Скрипты AppleScripts могут быть сохранены из редактора скриптов как приложения (называемые апплеты, или капли когда они принимают ввод через перетащить и отпустить ).[3]:69 Апплеты можно запускать из Док, с панели инструментов Finder окна, из Прожектор, от стороннего средства запуска приложений или из любого другого места, где можно запускать приложения.
Действия с папкой
С помощью действий с папками AppleScript можно запускать сценарии, когда в папках происходят определенные изменения (например, добавление или удаление файлов).[17] Действия с папкой можно назначить, щелкнув папку и выбрав Настройка действий с папкой ... из контекстного меню; Расположение этой команды в Mac OS X 10.6.x немного отличается от более ранних версий. То же действие можно выполнить с помощью сторонних утилит, таких как Hazel.[18]
Пусковые установки горячих клавиш
Горячие клавиши можно назначить сценариям AppleScripts в меню сценариев с помощью Настройки клавиатуры и мыши Панель предпочтений в Системные настройки. Кроме того, доступны различные сторонние утилиты -Альфред,[19] FastScripts,[20] Клавиатура Maestro,[21] QuicKeys,[22] Ртуть,[23] TextExpander[24]—Который может запускать сценарии AppleScripts по запросу с использованием комбинаций клавиш.
Меню сценария
Это общесистемное меню обеспечивает доступ к сценариям AppleScripts из строки меню macOS, видимой независимо от того, какое приложение запущено.[25] (Кроме того, многие приложения Apple, некоторые сторонние приложения и некоторые надстройки предоставляют свои собственные меню сценариев. Они могут быть активированы по-разному, но все работают в основном одинаково.) Выбор сценария в меню сценариев запускает Это. Начиная с Mac OS X 10.6.x, общесистемное меню сценариев можно включить в настройках Редактор скриптов; в предыдущих версиях Mac OS X его можно было включить из приложения AppleScript Utility. При первом включении в меню сценария отображается стандартная библиотека довольно общих функциональных сценариев AppleScripts, которую также можно открыть в редакторе сценариев и использовать в качестве примеров для изучения AppleScript. Скрипты можно организовать так, чтобы они появлялись в меню только тогда, когда определенные приложения находятся на переднем плане.
Командная строка Unix и launchd
AppleScripts можно запускать из командной строки Unix или из launchd для запланированных задач,[3]:716 с помощью инструмента командной строки osascript.[26] Инструмент osascript может запускать скомпилированные скрипты (файлы .scpt) и простые текстовые файлы (файлы .applescript - они компилируются инструментом во время выполнения). Приложения-скрипты можно запускать с помощью команды открытия Unix.

Связанные проблемы со сценариями

Библиотеки AppleScript
Повторно используемый AppleScript модули (доступно с OS X Mavericks ), написанные на AppleScript или AppleScriptObjC и сохранены в виде файлов сценариев или пакетов в определенных местах,[27] который можно вызвать из других скриптов. При сохранении в виде пакета библиотека может включать файл словаря AppleScript (sdef),[28] таким образом функционируя как добавление скриптов но написано на AppleScript или AppleScriptObjC.
AppleScript Studio
Платформа для присоединения интерфейсов Какао к приложениям AppleScript, часть пакета Xcode в Mac OS X 10.4 и 10.5, теперь устарела в пользу AppleScriptObjC.[29]:438
AppleScriptObjC
А Какао развитие программная среда, также называемый AppleScript / Objective-C или ASOC,[30] часть пакета Xcode, поскольку Mac OS X Снежный барс.[31] AppleScriptObjC позволяет AppleScripts напрямую использовать классы и методы Какао.[32] В следующей таблице показана доступность AppleScriptObjC в различных версиях macOS:[33]
Где AppleScriptObjC можно использовать в каждой версии macOS
В XcodeВ апплетахВ AppleScript
Библиотеки
В Редактор скриптов
10.6да
10.7дада
10.8дада
10.9дадада
10.10дададада
Автомат
Графическая модульная среда редактирования, в которой рабочие процессы построены из действия. Он предназначен для дублирования многих функций AppleScript без необходимости знания программирования. В Automator есть действие, специально разработанное для содержания и запуска сценариев AppleScripts для задач, которые слишком сложны для упрощенной структуры Automator.[34]
Основные системные приложения со сценариями
Эти только фоновые приложения, входящие в состав macOS, используются, чтобы позволить AppleScript получить доступ к функциям, которые обычно не поддерживают скрипты. Начиная с Mac OS X 10.6.3 они включают скриптовые приложения для VoiceOver (пакет сценариев для слуха и чтения с экрана Брайля), Системные события (управление приложениями, не поддерживающими сценарии, и доступ к определенным системным функциям и основным файловым операциям), Утилита настройки принтера (сценарий для обработки заданий печати), Image Events (обработка основного изображения) , HelpViewer (скриптовая утилита для отображения справки), Database Events (минимальный интерфейс базы данных SQLite3) и AppleScript Utility (для написания скриптов некоторых предпочтений, связанных с AppleScript), а также несколько служебных приложений, используемых системой.
Дополнения к сценариям (OSAX)
Плагины для AppleScript, разработанные Apple или третьими сторонами.[35] Они предназначены для расширения встроенного набора команд, расширения возможностей AppleScript и уменьшения его зависимости от функций, предоставляемых приложениями. macOS включает набор дополнений к сценариям, называемых стандартными дополнениями (StandardAdditions.osax), который добавляет набор команд и классов, которые не являются частью основных функций AppleScript, включая диалоги взаимодействия с пользователем, чтение и запись файлов, команды файловой системы, функции даты, а также текстовые и математические операции; без этого OSAX у AppleScript не было бы возможности выполнять многие базовые действия, не выполняемые непосредственно приложением.

Основы языка

Классы (типы данных)

Хотя приложения могут определять специализированные классы (или типы данных), AppleScript также имеет ряд встроенных классов. Эти базовые классы данных напрямую поддерживаются языком и обычно распознаются скриптовыми приложениями. Наиболее распространены следующие:

  • Основные объекты
    • применение: объект приложения, используемый в основном как спецификатор для операторов tell (сообщить приложению "Finder"…).
    • сценарий: объект скрипта. Объекты сценария - это контейнеры для сценариев. Каждый AppleScript создает объект сценария при запуске, и объекты сценария могут быть созданы в AppleScripts.
    • класс: мета-объект, определяющий тип других объектов.
    • Справка: объект, который инкапсулирует неоцененный спецификатор объекта, который может указывать или не указывать на допустимый объект. Можно оценить по запросу, открыв его содержание свойство.
  • Стандартные объекты данных
    • постоянный: а постоянный ценность. Существует ряд констант, определяемых языком, например Пи, вкладка, и перевод строки.
    • логический: а Булево значение истина / ложь. На самом деле подкласс из постоянный.
    • количество: редко используется Абстрактные суперкласс из целое число и настоящий.
    • целое число: an целое число. Можно манипулировать с помощью встроенных математических операторов.
    • настоящий: а плавающая точка (настоящий ) количество. Можно манипулировать с помощью встроенных математических операторов.
    • Дата: дата и время.
    • текст: текст. В версиях AppleScript до 2.0 (Mac OS X 10.4 и ниже) текст класс отличался от строка и Текст Unicode, и трое вели себя несколько иначе; в 2.0 (10.5) и более поздних версиях все они являются синонимами, и весь текст обрабатывается как UTF-16 (“Unicode ») -Кодировано.[36]
  • Контейнеры
    • список: упорядоченный список объектов. Может содержать любой класс, включая другие списки и классы, определенные приложениями.
    • запись: ключевой список объектов. Как список, за исключением того, что он структурирован как пары ключ-значение. Доступ с ключом во время выполнения не поддерживается; все ключи должны быть идентификаторами констант времени компиляции.
  • Файловая система
    • псевдоним: ссылка на объект файловой системы (файл или папку). Псевдоним сохранит свою ссылку на объект, если объект будет перемещен или переименован.
    • файл: ссылка на объект файловой системы (файл или папку). Это статическая ссылка, которая может указывать на объект, который в настоящее время не существует.
    • POSIX файл: ссылка на объект файловой системы (файл или папку) в виде обычного текста с использованием Unix (POSIX ) -стиль слэш (/) обозначение. Это не настоящий тип данных, поскольку AppleScript автоматически конвертирует файлы POSIX в обычные файлы всякий раз, когда они используются.[37]
  • Разное
    • Цвет RGB: задает триплет RGB (в 16-битный высокий цвет формат) для использования в командах и объектах, работающих с цветами.
    • типы единиц: класс, который преобразует стандартные единицы измерения. Например, значение можно определить как квадратные ярды, затем преобразован в квадратный фут путем преобразования между типами единиц (используя так как оператор).

Языковые структуры

Многие процессы AppleScript управляются блоками кода, где блок начинается с команды команда и заканчивается конец команды заявление. Наиболее важные структуры описаны ниже.

Условные

AppleScript предлагает два вида условных операторов.

- Простое условноеесли Икс < 1000 тогда набор Икс к Икс + 1- Сложное условноеесли Икс больше, чем 3 тогда     - командыеще     - другие командыконец если

Петли

Цикл повтора AppleScript имеет несколько немного разных разновидностей. Все они выполняют блок между повторение и конец повторения строк несколько раз. Цикл можно преждевременно остановить командой выход повторить.

Повторять вечно.

повторение     - команды на повторениеконец повторение

Повторите заданное количество раз.

повторение 10 раз     - команды на повторениеконец повторение

Условные петли. Блок внутри повторить пока цикл выполняется до тех пор, пока условие истинно. Условие повторно оценивается после каждого выполнения блока. В повторять, пока В остальном цикл идентичен, но блок выполняется до тех пор, пока условие оценивается как ложное.

набор Икс к 5повторение в то время как Икс > 0     набор Икс к Икс - 1конец повторениенабор Икс к 5повторение до тех пор Икс  0     набор Икс к Икс - 1конец повторение

Цикл с переменной. При запуске цикла переменной присваивается начальное значение. После каждого выполнения блока к переменной добавляется необязательное значение шага. Значение шага по умолчанию равно 1.

- повторить блок 2000 раз, я получу все значения от 1 до 2000повторение с участием я от 1 к 2000     - команды на повторениеконец повторение- повторить блок 4 раза, я получу значения 100, 75, 50 и 25повторение с участием я от 100 к 25 от -25    - команды на повторение конец повторение

Перечислите список. На каждой итерации установите loopVariable на новый элемент в данном списке

набор Всего к 0повторение с участием Икс в {1, 2, 3, 4, 5}	набор Всего к Всего + Иксконец повторение
Ориентация на приложенияОбработка ошибок
-- Простая формасказать применение "Сафари" к активировать- соединениесказать применение «Мое приложение»     - команды для приложенияконец сказать
пытаться     - команды для тестированияна ошибка     - команды ошибок конец пытаться

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

Обработчик функцийБлок действий с папкойОбработчик запуска
на myFunction(параметры...)     - команды подпрограммы конец myFunction
на добавление папка Предметы к thisFolder после получение эти предметы     - команды для применения к папке или элементамконец добавление папка Предметы к
на бегать     - командыконец бегать

Обработчики также могут быть определены с использованием «to» вместо «on» и могут быть записаны так, чтобы принимать помеченные параметры, не заключенные в скобки.

Обработчик с помеченными параметрамиОбработчик, использующий "to" и помеченные параметры
на Скала около то Часы	диалог отображения (Часы так как строка)конец Скала- звонил с:Скала около то текущая дата
к проверять для твой номер от дно через верх	если дно  твой номер и твой номер  верх тогда		диалог отображения «Поздравляю! Вы забили».	конец есликонец проверять- называется:проверять для 8 от 7 через 10

В AppleScript есть четыре типа предопределенных обработчиков - run, open, idle и quit - каждый из которых создается так же, как и обработчик run, показанный выше.

Обработчик запуска
Определяет основной код скрипта, который вызывается при запуске скрипта. Блоки обработчика выполнения не являются обязательными, если сценарию не передаются аргументы. Если явный блок обработчика запуска опущен, то весь код, который не содержится внутри блоков обработчика, выполняется, как если бы он находился в неявном обработчике запуска.
Открытый обработчик
Определяется с помощью "при открытии элементов".
на открыто предметы     повторение с участием этот пункт в предметы         сказать применение "Искатель" к Обновить этот пункт     конец повторение конец открыто

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

Обработчик простоя
Подпрограмма, которая периодически запускается системой, когда приложение простаивает.
на праздный     --код для выполнения после завершения выполнения скрипта  вернуть 60 - количество секунд для паузы перед повторным запуском обработчика простояконец праздный

Обработчик простоя может использоваться в апплетах или каплях, сохраненных как открытые апплеты, и полезен для сценариев, которые отслеживают определенные данные или события. По умолчанию продолжительность простоя составляет 30 секунд,[38] но его можно изменить, включив в конец подпрограммы оператор return x, где x - количество секунд, в течение которых система должна ждать перед повторным запуском обработчика.

Выйти из обработчика
Обработчик, который запускается, когда апплет получает запрос выхода. Это можно использовать для сохранения данных или выполнения других конечных задач перед выходом.
на уволиться     - команды для выполнения перед завершением скрипта  Продолжать уволиться - требуется для завершения работы скриптаконец уволиться
Объекты сценария

Объекты скрипта могут быть определены явно с использованием синтаксиса:

сценарий scriptName     - команды и обработчики, специфичные для скриптаконец сценарий

Объекты сценария могут использовать те же структуры «tell», которые используются для объектов приложения, и могут быть загружены из файлов и сохранены в них. В некоторых случаях время выполнения можно сократить за счет использования объектов сценария.

Различная информация

  • Переменные не являются строго типизированными, и их не нужно объявлять. Переменные могут принимать любой тип данных (включая скрипты и функции). Следующие команды являются примерами создания переменных:
    набор переменная1 к 1 - создать целочисленную переменную с именем variable1набор переменная2 к "Здравствуйте" - создать текстовую переменную с именем variable2копировать {17, "двойной день"} к переменная3 - создать переменную списка с именем variable3набор {переменная4, переменная5} к переменная3 - скопируйте элементы списка переменной3 в отдельные переменные variable4 и variable5набор переменная6 к сценарий myScript - установить переменную для экземпляра скрипта
  • Объекты сценария - это полные объекты - они могут инкапсулировать методы и данные и наследовать данные и поведение от родительского сценария.
  • Подпрограммы не могут быть вызваны непосредственно из блоков сообщения приложения. Используйте для этого ключевые слова "мой" или "из меня".
сказать применение "Искатель"    набор Икс к мой myHandler()    -- или    набор Икс к myHandler() из меняконец сказатьна myHandler()    --командыконец myHandler

Использование той же техники для написания сценариев команд добавления может уменьшить количество ошибок и повысить производительность.

сказать применение "Искатель"	набор любой номер к мой (случайный номер от 5 к 50)конец сказать

Открытая архитектура сценариев

Важным аспектом реализации AppleScript является Открытая архитектура сценариев (OSA).[39] Apple предоставляет OSA для других языков сценариев и сторонних продуктов для сценариев / автоматизации, таких как QuicKeys и UserLand Frontier, чтобы работать наравне с AppleScript. AppleScript был реализован как скрипт составная часть, а основные спецификации для взаимодействия таких компонентов с OSA были общедоступными, что позволяло другим разработчикам добавлять в систему свои собственные компоненты сценариев. Публичный клиент API для загрузки, сохранения и компиляции сценариев будет работать одинаково для всех таких компонентов, что также означает, что апплеты и капли могут содержать сценарии на любом из этих языков сценариев.

Одна из особенностей OSA - дополнения к сценариям или OSAX для Расширение открытой архитектуры сценариев,[35] которые были вдохновлены HyperCard Внешние команды. Дополнения к сценариям библиотеки которые позволяют программистам расширять функции AppleScript. Команды, включенные в качестве дополнений к сценариям, доступны для всей системы и не зависят от приложения (см. Также § Библиотеки AppleScript ). Редактор AppleScript также может напрямую редактировать и запускать некоторые языки OSA.

JavaScript для автоматизации

Под OS X Йосемити и более поздних версиях macOS JavaScript для автоматизации (JXA) остается единственной серьезной альтернативой AppleScript на языке OSA,[13] хотя версии Macintosh Perl, Python, Рубин, и Tcl все они поддерживают собственные средства работы с событиями Apple, не являясь компонентами OSA.[29]:516

JXA также предоставляет Цель-C (и язык C) интерфейс иностранного языка.[13] Поскольку среда основана на движке JavaScriptCore WebKit, набор функций JavaScript синхронизируется с движком системного браузера Safari. JXA предоставляет модульную систему JavaScript, а также можно использовать CommonJS модули через browserify.[40]

Смотрите также

  • BBEdit - текстовый редактор с отличными сценариями

использованная литература

  1. ^ «Дата выпуска OS X 10.10 Yosemite». Получено 16 ноября, 2014.
  2. ^ а б c d Гольдштейн, Адам (2005). AppleScript: отсутствующее руководство. Севастополь, Калифорния: O'Reilly Media. ISBN  0596008503. OCLC  56912218.
  3. ^ а б c d е ж г час я Сандерсон, Хэмиш; Розенталь, Ханаан (2009). Изучите AppleScript: подробное руководство по написанию сценариев и автоматизации в Mac OS X (3-е изд.). Беркли: Apress. Дои:10.1007/978-1-4302-2362-7_27. ISBN  9781430223610. OCLC  308193726.
  4. ^ Флинн, Лори (27 февраля 1989 г.). «Apple думает о стандартизации HyperTalk». InfoWorld. п. 31.
  5. ^ а б Кук, Уильям (2007). «AppleScript» (PDF). История языков программирования (HOPL III). Материалы третьей конференции ACM SIGPLAN. Ассоциация вычислительной техники: 1–21. Дои:10.1145/1238844.1238845. ISBN  9781595937667. S2CID  220938191.
  6. ^ «Справочник по командам AppleScript Language Guide: сценарий оболочки». developer.apple.com. Получено 15 сентября, 2019.
  7. ^ «Лучшие хиты Apple: 30 значимых продуктов». macworld.com. Получено 12 сентября, 2019.
  8. ^ Грубер, Джон (Март 2013 г.). «Маловероятная стойкость AppleScript». Macworld. 30 (3): 100.
  9. ^ Лавджой, Бен (17 ноября 2016 г.). «Сал Согоян говорит:« Спросите Apple »о будущем автоматизации пользователей Mac, поскольку компания сокращает позиции». 9to5mac.com. Получено 8 мая, 2017.
  10. ^ Эванс, Джонни (17 ноября 2016 г.). «Неужели Apple действительно хочет убить Automator, AppleScript? Шокирующее увольнение опытного гуру разработчиков Apple вызывает шок в сообществе Mac». Computerworld.com. Получено 8 мая, 2017.
  11. ^ Гамет, Джефф (23 ноября 2016 г.). «Цель Apple - не то же самое, что стремление к автоматизации Mac». macobserver.com. Получено 8 мая, 2017.
  12. ^ «Приложения со сценариями». developer.apple.com. Получено 26 июля, 2018.
  13. ^ а б c Сиракуза, Джон (16 октября 2014 г.). «OS X 10.10 Yosemite: Обзор Ars Technica: автоматизация JavaScript». Ars Technica. Получено 8 мая, 2017.
  14. ^ "Домашняя страница Smile and SmileLab". satimage.fr. Получено 8 мая, 2017.
  15. ^ "ASObjC Explorer 4 снято с производства". macosxautomation.com. Архивировано из оригинал 21 июня 2017 г.. Получено 8 мая, 2017.
  16. ^ "Журнал Марка Олдритта» FaceSpan ". blog.latenightsw.com. Получено 8 мая, 2017.
  17. ^ «Руководство по языку AppleScript: Справочник по действиям с папками». developer.apple.com. Получено 8 мая, 2017.
  18. ^ Миллер, Дэн (22 декабря 2010 г.). «Обзор капсулы: Хейзел 2.3». Macworld.com. Получено 8 мая, 2017.
  19. ^ Луч, Брайан (10 февраля 2015 г.). «Обзор Альфреда: эта программа запуска приложений для Mac продолжает сиять, но Alfred Remote не работает». Macworld.com. Получено 10 мая, 2017.
  20. ^ Фрейкс, Дэн (2 июня 2011 г.). «Обзор капсулы: FastScripts 2.5». Macworld.com. Получено 8 мая, 2017.
  21. ^ Брин, Кристофер (4 июня 2013 г.). «Mac Gems: Keyboard Maestro 6 - гений в повторяющихся задачах». Macworld.com. Получено 10 мая, 2017.
  22. ^ Брин, Кристофер (7 мая 2010 г.). «Обзор капсулы: QuicKeys 4». Macworld.com. Получено 8 мая, 2017.
  23. ^ "AppleScripts - Quicksilver Wiki". qsapp.com. Получено 10 мая, 2017.
  24. ^ Флейшман, Гленн (12 июня 2015 г.). "Обзор TextExpander 5". Macworld.com. Получено 8 мая, 2017.
  25. ^ «Руководство по сценариям автоматизации Mac: использование общесистемного меню сценариев». developer.apple.com. Получено 8 мая, 2017.
  26. ^ "osascript (1) Страница руководства Mac OS X". developer.apple.com. Получено 8 мая, 2017.
  27. ^ «Библиотеки AppleScript». macosautomation.com. Получено 8 мая, 2017.
  28. ^ «WWDC 2013 Сессия 416: Знакомство с библиотеками AppleScript». asciiwwdc.com. Получено 8 мая, 2017.
  29. ^ а б Нойбург, Мэтт (2006). AppleScript: подробное руководство (2-е изд.). Пекин: O'Reilly Media. ISBN  0596102119. OCLC  68694976.
  30. ^ Цай, Майкл (29 сентября 2014 г.). «AppleScript и Йосемити». mjtsai.com. Получено 9 мая, 2017.
  31. ^ «Примечания к выпуску AppleScriptObjC». developer.apple.com. Получено 8 мая, 2017.
  32. ^ Уолди, Бен (6 сентября 2012 г.). «Создание базового приложения AppleScriptObjC (Cocoa-AppleScript) с помощью Xcode». peachpit.com. Получено 9 мая, 2017.
  33. ^ Таблица адаптирована из: Наганоя, Такааки. «Руководство по созданию сценариев ASObjCExtras» (PDF). piyocast.com. Получено 9 мая, 2017.
  34. ^ «Введение в руководство по действиям Automator AppleScript». developer.apple.com. Получено 8 мая, 2017.
  35. ^ а б «Техническое примечание TN1164: Дополнения к сценариям для Mac OS X». developer.apple.com. Получено 8 мая, 2017.
  36. ^ «Примечания к выпуску AppleScript: изменения 10.5». developer.apple.com. Получено 8 мая, 2017.
  37. ^ «Файл POSIX - Справочник по классам - Руководство по языку AppleScript». developer.apple.com. Получено 8 января, 2018.
  38. ^ «Руководство по языку AppleScript: обработчики в скриптовых приложениях». developer.apple.com. Получено 21 июля, 2013.
  39. ^ «Обзор AppleScript: архитектура открытого сценария». developer.apple.com. Получено 8 мая, 2017.
  40. ^ «Импорт скриптов». GitHub. JXA-Cookbook. 6 декабря 2019 г.,. Получено 9 декабря, 2019.

дальнейшее чтение

внешние ссылки