Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

AppleScript это язык сценариев , созданный Apple Inc. , которая облегчает автоматизированный контроль над сценарным Mac приложениями . Впервые представленный в System 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 Script Host или IBM REXX по своему назначению [ необходима ссылка ]но он отличается от всех трех. Существенным для его функциональности является то, что приложения Macintosh публикуют «словари» адресуемых объектов и операций.

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

История [ править ]

В конце 1980 - х года Apple , считается использованием HyperCard «s HyperTalk языка сценариев в качестве стандартного языка для развития конечных пользователей по всей компании и в ее классической Mac OS операционной системы, а также для межпроцессного взаимодействия между 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 г.) и ее фреймворки Cocoa значительно повысили полезность и гибкость AppleScript. Какао-приложения позволяют разработчикам приложений с минимальными усилиями реализовывать базовые сценарии для своих приложений, расширяя число приложений, которые могут быть напрямую доступны для сценариев. В то же время переход на основы Unix и возможность AppleScript запускать команды Unix напрямую с помощью do shell scriptкоманды [6] позволили AppleScripts гораздо больший контроль над самой операционной системой. [3] : 863 AppleScript Studio , выпущенный с Mac OS X 10.2как часть Xcode , а затем и AppleScriptObjC framework, выпущенного в Mac OS X 10.6 , позволял пользователям создавать приложения Cocoa с использованием AppleScript. [3] : 969

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

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

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

Основные понятия [ править ]

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

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

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

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

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

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

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

Комментарии [ редактировать ]

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

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

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

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

Привет, мир! [ редактировать ]

В AppleScript традиционное «Hello, World!» программа может быть написана во многих различных формах, включая:

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

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

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

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

отображать предупреждение  "Hello, world!"  кнопки  { «Rudely падение» ,  «Счастливо принять» } установить  TheAnswer  на  кнопку возвращенного  из  в  результате , если  TheAnswer  будет  «Счастливо принимать»  то сигнал  5 еще слово  «вздор!» конец,  если

Метафора естественного языка [ править ]

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

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

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

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

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

скажите  приложение  «Microsoft Word»  бросить конец ,  рассказывает

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

скажите  приложение  «Microsoft Word» ,  чтобы  бросить курить

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

выйти из  приложения  "Microsoft Word"

Концепция иерархии объектов может быть выражена с помощью вложенных блоков:

 приложение  tell "QuarkXPress"  сообщить  документ  1  сказать  страницу  2  текстовое поле сказать  1 установить слово 5 на "Apple" конец сказать конец сказать конец сказать конец сказать              

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

пикселей  7  из  строки  3  из  TIFF  изображения  «моей битовой карты»

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

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

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

Примеры скриптов [ править ]

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

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

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

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

Инструменты разработки [ править ]

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

Редакторы сценариев предоставляют унифицированную среду программирования для сценариев AppleScripts, включая инструменты для составления, проверки, компиляции, выполнения и отладки сценариев. Они также предоставляют механизмы для открытия и просмотра словарей 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), редактор сценариев включает возможность писать как на AppleScript, так и на JavaScript . [13]
Xcode
Набор инструментов для разработки приложений с функциями редактирования сценариев AppleScripts или создания полноценных приложений, написанных с помощью AppleScript.

От третьих лиц [ править ]

Отладчик сценариев от Late Night Software
Сторонняя коммерческая IDE для AppleScript. Отладчик сценариев - это более продвинутая среда AppleScript, которая позволяет автору сценария отлаживать сценарии AppleScripts с помощью пошагового выполнения , точек останова , включения и выключения функций / подпрограмм, отслеживания переменных и т. Д. Отладчик сценариев также содержит расширенный браузер словарей, который позволяет пользователю видеть словарь в действии в реальных ситуациях. То есть, а не просто список того, что охватывает словарь, можно открыть документ в Pages., например, и посмотрите, как термины словаря применяются к этому документу, что упрощает определение того, какие части словаря использовать. Отладчик сценариев не предназначен для создания сценариев с графическим интерфейсом пользователя, кроме базовых предупреждений и диалогов, а больше ориентирован на кодирование и отладку сценариев.
Улыбка и 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 от Late Night Software
Прекращенная сторонняя коммерческая IDE для создания приложений AppleScript с графическим пользовательским интерфейсом. [16]

Средства запуска скриптов [ править ]

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

Апплеты
Скрипты AppleScripts могут быть сохранены из редактора скриптов в виде приложений (называемых апплетами или каплями, когда они принимают ввод посредством перетаскивания ). [3] : 69 Апплеты можно запускать из Dock , с панели инструментов окон Finder , из Spotlight , из сторонних программ запуска приложений или из любого другого места, где можно запускать приложения.
Действия с папкой
С помощью действий с папками AppleScript можно запускать сценарии, когда в папках происходят определенные изменения (например, добавление или удаление файлов). [17] Действия с папкой можно назначить, щелкнув папку и выбрав « Настройка действий с папкой ...» в контекстном меню; Расположение этой команды в Mac OS X 10.6.x немного отличается от более ранних версий. То же действие можно выполнить с помощью сторонних утилит, таких как Hazel. [18]
Пусковые установки горячих клавиш
Сочетания клавиш могут быть назначены AppleScripts в меню сценария с помощью клавиатуры & Параметры мыши панели настроек в системных настройках . Кроме того, доступны различные сторонние утилиты - Alfred , [19] FastScripts, [20] Keyboard Maestro , [21] QuicKeys, [22] Quicksilver , [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
Программная среда разработки Cocoa , также называемая AppleScript / Objective-C или ASOC, [30] является частью пакета Xcode, начиная с Mac OS X Snow Leopard . [31] AppleScriptObjC позволяет AppleScripts напрямую использовать классы и методы Какао. [32] В следующей таблице показана доступность AppleScriptObjC в различных версиях macOS: [33]
Автомат
Графическая модульная среда редактирования, в которой рабочие процессы строятся из действий. Он предназначен для дублирования многих функций 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 включает в себя набор дополнений к сценариям, называемых Standard Additions ( StandardAdditions.osax ), который добавляет набор команд и классов, не являющихся частью основных функций AppleScript, включая диалоги взаимодействия с пользователем, чтение и запись файлов, команды файловой системы, функции даты , текстовые и математические операции; без этого OSAX у AppleScript не было бы возможности выполнять многие базовые действия, не выполняемые непосредственно приложением.

Основы языка [ править ]

Классы (типы данных) [ править ]

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

  • Основные объекты
    • application : объект приложения, используемый в основном как спецификатор для операторов tell ( tell application "Finder" …).
    • скрипт : объект скрипта. Объекты сценария - это контейнеры для сценариев. Каждый AppleScript создает объект сценария при запуске, и объекты сценария могут быть созданы в AppleScripts.
    • класс : мета-объект, определяющий тип других объектов.
    • ссылка : объект, который инкапсулирует неоцененный спецификатор объекта, который может указывать или не указывать на действительный объект. Может быть оценено по запросу путем доступа к его contentsсвойству.
  • Стандартные объекты данных
    • constant : постоянное значение. Есть целый ряд языковых определенных констант, таких как pi, tabи linefeed.
    • boolean : логическое значение true / false. На самом деле подкласс из constant.
    • номер : редко используется абстрактный суперкласс из integerи real.
    • целое число : целое число . Можно манипулировать с помощью встроенных математических операторов.
    • real : число с плавающей запятой ( действительное ). Можно манипулировать с помощью встроенных математических операторов.
    • дата : дата и время.
    • текст : текст. В версиях AppleScript до 2.0 (Mac OS X 10.4 и ниже) textкласс отличался от stringи Unicode text, и эти три вели себя несколько иначе; в 2.0 (10.5) и более поздних версиях все они являются синонимами, и весь текст обрабатывается как кодированный в UTF-16 (« Unicode »). [36]
  • Контейнеры
    • список : упорядоченный список объектов. Может содержать любой класс, включая другие списки и классы, определенные приложениями.
    • запись : ключевой список объектов. Как список, за исключением того, что он структурирован как пары ключ-значение. Доступ с ключом во время выполнения не поддерживается; все ключи должны быть идентификаторами констант времени компиляции.
  • Файловая система
    • псевдоним : ссылка на объект файловой системы (файл или папку). Псевдоним сохранит свою ссылку на объект, если объект будет перемещен или переименован.
    • file : ссылка на объект файловой системы (файл или папку). Это статическая ссылка, которая может указывать на объект, который в настоящее время не существует.
    • Файл POSIX : ссылка на объект файловой системы (файл или папку) в виде обычного текста с использованием нотации косой черты в стиле Unix ( POSIX ) (/). Это не настоящий тип данных, поскольку AppleScript автоматически конвертирует файлы POSIX в обычные файлы всякий раз, когда они используются. [37]
  • Разное
    • Цвет RGB : указывает триплет RGB (в 16-битном высоком цветовом формате) для использования в командах и объектах, которые работают с цветами.
    • Типы единиц : класс, который преобразует стандартные единицы. Например, значение может быть определено как square yards, а затем преобразовано в преобразование square feetмежду типами единиц (с помощью asоператора).

Языковые структуры [ править ]

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

Условные [ править ]

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

- Простое условие, если  x  <  1000,  тогда  установите  x  равным  x  +  1- Составное условное, если  x  больше  3,  то  - команды else  - другие команды заканчиваются,  если

Петли [ править ]

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

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

repeat  - команды для повторения end  repeat

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

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

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

установить  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 повторений  с  x  в  { 1 ,  2 ,  3 ,  4 ,  5 } установить  total  на  total  +  x конец  повторения

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

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

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

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

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

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

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

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

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

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

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

Разная информация [ править ]

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

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

сказать  приложение  «Finder» набор  anyNumber  к  моему  ( случайному числу  от  5  до  50 ) конца  рассказывает

Открытая архитектура сценариев [ править ]

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

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

JavaScript для автоматизации [ править ]

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

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

См. Также [ править ]

  • BBEdit - очень скриптах текстовый редактор

Ссылки [ править ]

  1. ^ "Дата выпуска OS X 10.10 Yosemite" . Проверено 16 ноября 2014 года .
  2. ^ a b c d Гольдштейн, Адам (2005). AppleScript: отсутствующее руководство . Севастополь, Калифорния: O'Reilly Media . ISBN 0596008503. OCLC  56912218 .
  3. ^ a b c d e f g h я Сандерсон, Хэмиш; Розенталь, Ханаан (2009). Изучите AppleScript: подробное руководство по написанию сценариев и автоматизации в Mac OS X (3-е изд.). Беркли: Апресс . DOI : 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. DOI : 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. ^ a b c Сиракуза, Джон (16 октября 2014 г.). «OS X 10.10 Yosemite: Обзор Ars Technica: автоматизация JavaScript» . Ars Technica . Проверено 8 мая 2017 года .
  14. ^ "Улыбка и домашняя страница 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. ^ Фрэйкс, Dan (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. ^ a b Neuburg, Мэтт (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. ^ Таблица адаптирована из: Naganoya, Такааки. «Руководство по созданию сценариев ASObjCExtras» (PDF) . piyocast.com . Проверено 9 мая 2017 года .
  34. ^ «Введение в Учебное пособие по действиям Automator AppleScript» . developer.apple.com . Проверено 8 мая 2017 года .
  35. ^ a b «Техническое примечание 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 года .

Дальнейшее чтение [ править ]

  • «Руководство по языку AppleScript» . developer.apple.com . 2016 . Проверено 9 мая 2017 года .Более старая версия (2015 г.) в формате PDF доступна по адресу : CiteSeer x :  10.1.1.697.5220
  • Манро, Марк Конвей (2010). AppleScript . Справочник разработчика. Вайли. ISBN 978-0-470-56229-1.
  • Розенталь, Ханаан; Сандерсон, Хэмиш (2010). Изучите AppleScript: подробное руководство по созданию сценариев и автоматизации в Mac OS X (третье изд.). Апресс . ISBN 978-1-4302-2361-0.
  • Согоян, Сал ; Чизмен, Билл (2009). Учебная серия Apple: AppleScript 1-2-3 . Peachpit Press . ISBN 978-0-321-14931-2.
  • Кук, Уильям (2007). «AppleScript» (PDF) . История языков программирования (HOPL III) . Материалы третьей конференции ACM SIGPLAN. ACM: 1–21. DOI : 10.1145 / 1238844.1238845 . ISBN 9781595937667. S2CID  220938191 .
  • Форд-младший, Джерри Ли (2007). Программирование AppleScript для абсолютного новичка . Курсовая технология . ISBN 978-1-59863-384-9.
  • Нойбург, Мэтт (2006). AppleScript: полное руководство . O'Reilly Media . ISBN 0-596-10211-9.
  • Гольдштейн, Адам (2005). AppleScript: отсутствующее руководство . O'Reilly Media. ISBN 0-596-00850-3.
  • Тринко, Том (2004). AppleScript для чайников . Для чайников . ISBN 978-0-7645-7494-8.

Внешние ссылки [ править ]

  • AppleScript в Curlie
  • «Обзор AppleScript» . developer.apple.com . 2007 . Проверено 7 ноября 2020 года .
  • «AppleScript для программистов на Python (сравнительная таблица)» . aurelio.net . 2005 . Проверено 9 мая 2017 года .
  • «AppleScripts Дуга для iTunes» . dougscripts.com . Проверено 9 мая 2017 года .
  • «Mac OS X Automation» . macosautomation.com . Проверено 9 мая 2017 года .
  • «Сообщество MacScripter AppleScript» . macscripter.net . Проверено 9 мая 2017 года .