Редактор скриптов mac os что это

Обновлено: 30.06.2024

Вы еще не используете AppleScript? Не знаете, что это такое? Считаете, будто Вам это ни к чему? Или, быть может, память о школьных уроках информатики вызывает у Вас приступ аллергии при одном упоминании слова «программа»? Значит, Вы правильно сделали, открыв эту статью.

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

Что такое AppleScript

Нередко при работе с той или иной программой нам приходится по многу раз выполнять одинаковые действия: нажимать на одни и те же клавиши, выбирать одну и ту же команду из меню, вводить одни и те же значения в диалоговых окнах& Вот тут-то на помощь и приходит AppleScript. Описываем последовательность наших операций в виде программы-«скрипта», запускаем и — спокойно пьем кофе, изредка поглядывая, не закончилась ли обработка последнего, три тысячи семьсот восемьдесят девятого файла. Нечто подобное существует в виде BAT-файлов DOS или скриптов для оболочек (shell) UNIX. Но у AppleScript есть важное преимущество: этот язык «понимают» как Finder, так и большое число прикладных программ, и скрипт может обращаться поочередно к ним всем.

Язык, которым мы будем пользоваться (он тоже называется AppleScript), очень близок к обычному английскому языку. Например, скрипт может выглядеть вот так:

Думаю, все поняли, что он сделает. Но чтобы научиться писать свои собственные скрипты, придется разобраться с некоторыми понятиями.

AppleScript — язык объектно-ориентированный. То есть все, что «существует» в вашем компьютере, он считает объектами (objects). Объект может состоять из других объектов, быть включен в другой объект, относиться к другому объекту. Например, Finder — это объект. У него есть «подчиненные» объекты — папки, файлы, окна. В редакторе Tex-Edit имеется объект текст, состоящий из слов, строк, абзацев и т. п. Знать, как соотносятся объекты (их иерархию) очень важно, поскольку команда передается «по цепочке». Действует этакая «вертикаль власти»: мы отдаем приказ Finderу, он — папке, та — вложенной в нее папке и так далее, пока не дойдет до нужного файла. И «рапорт об исполнении» опять-таки пойдет по той же цепочке — в обратную сторону.

Однотипные объекты (например, все папки) образуют класс (class). Каждый объект обладает некоторым набором свойств (properties), отличающим его от другого. Например, у каждого файла есть имя, метка, тип, дата создания, версия и еще более десятка характеристик. Часть из них скрипт может менять, некоторые — только прочесть.

Один класс (так называемый «потомок») может наследовать свойства другого класса («предка»). Например, и у папок, и у файлов есть общий предок — элемент (item).

Теперь рассмотрим наш пример, немного дополнив его:

Но пора бы от теоретических рассуждений перейти к чему-то более осязаемому. Самое время запустить Script Editor.

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

Для работы с AppleScript создано несколько программ, среди которых есть весьма совершенные средства разработки. Впоследствии Вы, вероятно, обзаведетесь одним из них. Но для первоначального знакомства нам вполне хватит редактора, входящего в состав Mac OS.

Что такое AppleScript

Окно Script Editor разделено на две части: в верхней записывается комментарий (он выводится на экран перед исполнением скрипта), а в нижней — программа. Попробуем набрать наш пример (без моих комментариев, конечно, можно обойтись). Затем щелкнем кнопку «Check syntax». Если Вы допустили какую-либо ошибку, появится окно с пояснением. Но, скорее всего, все будет нормально — и после небольшой паузы текст несколько изменит свой вид. Каким шрифтом при этом будут выделены разные элементы скрипта, можно настроить, воспользовавшись командой «AppleScript Formatting» меню «Edit». Теперь можно нажать кнопку «Run». Сработало?

Написанный скрипт можно сохранить по-разному: либо только исходный текст (Text), либо уже скомпилированный скрипт (Compiled Script) — готовый к исполнению редактором скриптов или некоторыми другими программами, наконец — в виде самостоятельной программы-апплета (Application). Можно сделать скрипт «только для исполнения» (Run-only). Только не забудьте в этом случае сохранить — для себя — и оригинальный файл. Иначе добраться до его исходного текста не смогут не только конкуренты, жаждущие нарушить ваши авторские права, но и Вы сами.

«Ну, хорошо,»— вероятно, думаете, Вы,— «редактором пользоваться проще простого, прочесть готовые скрипты — тоже не сложно. Но писать-то их как? Откуда взять все эти классы, команды, свойства?» Ответ прост: нужно посмотреть в словаре. Каждая, поддерживающая работу с AppleScript, программа, а также ScriptingAddition (о «дополнениях» разговор еще впереди) содержит краткое описание всех своих объектов и распознаваемых команд. Посмотреть этот словарь можно непосредственно из редактора скриптов — выбрав «Open Dictionary» из меню «File» либо натащив нужную программу на картинку редактора.

Программы Макинтоша могут поддерживать AppleScript на трех разных уровнях.
Scriptable — программа может выполнять команды, описанные в виде скрипта.
Recordable — возможна запись команд, выполняемых в программе. Создадим новый скрипт, запускаем запись (кнопкой «Record»), выполняем, например, в Finder вручную необходимые действия, останавливаем запись («Stop»). Вот и все. Таким образом очень удобно делать заготовки скриптов.
Attachable — скрипт может выполняться непосредственно из программы, будучи «присоединенным» к меню или какому-либо объекту в окне. Примеры таких программ: AppleWorks, Tex-Edit, FileMaker Pro.

Откроем, например, словарь программы Finder.

Что такое AppleScript

Слева Вы видите список всех определенных в программе «терминов». Обратите внимание: часть из них набрана курсивом. Это — объекты. Все остальные — команды. Щелкнув на нужное слово, можно прочесть краткую справку.

Что, например, можно узнать про «Container»? Во-первых, мы видим: «Сlass container: An item that contains other items». То есть это — некий элемент, содержащий другие элементы. А если просмотреть описания нескольких следующих классов, станет ясно, что «контейнер» — понятие, включающее в себя и диски, и папки, и Стол (Desktop), и Корзину (Trash). Он обладает общими свойствами этих, во многом схожих, объектов. И в «родословном древе» — иерархии классов — является их предком.

Читаем дальше. «Plural form: containers». Форма множественного числа? Мы разве грамматику английского языка изучаем? И да, и нет. Я ведь уже упоминал, что AppleScript максимально приближен к естественному языку. И если мы хотим обработать все объекты данного класса, то записать это, как и полагается в английском языке, можно либо «every container», либо «containers».

Что такое AppleScript

Как Вы уже знаете, объект может содержать в себе другие объекты. Какие именно и чем отличаются друг от друга, описано в следующем разделе словаря — «Элементы» (Elements). Контейнер, как видите, может содержать объекты полутора десятков различных классов, например, другие контейнеры, папки, файлы документов и программ и т. д. А указать конкретный элемент какого-либо класса можно либо именем (by name), либо порядковым номером (by numeric index).

Что такое AppleScript

Ну, и наконец, последний раздел — «Свойства» (Properties). Тут мы, во-первых, видим, что класс «Контейнер» — наследник класса «Элемент» (<Inheritance> item [r/o]), то есть обладает всеми его свойствами. Но есть у этого класса и несколько своих собственных. Обратите внимание: часть из них помечена «[r/o]» (read only — только для чтения), эти свойства поменять командой AppleScript невозможно.

Что такое AppleScript

Теперь посмотрим, как описаны в словаре команды. Для примера возьмем уже знакомую Вам по примерам скриптов «Make» (создать). В верхней части страницы — назначение команды (создать новый элемент). Затем — как она записывается (синтаксис) и какие имеет параметры. Заметьте: некоторые параметры заключены в квадратные скобки. Так в словаре обозначают необязательные параметры. Составляя скрипт, мы можем без них обойтись, если же будем использовать, никакие скобки ставить не нужно. Завершает справку по команде указание ее результата (Result). В нашем примере им будет «ссылка» (reference) на созданный объект.

О, создатель!

Начнем с простейшего варианта. Пусть нам нужно назначить файлу letter.txt, находящемуся на Столе, назначить тип «TEXT» и код создателя «ttxt» (ПростоТекст).

Выбираем в словаре программы Finder объект file. Находим нужные нам свойства: file type и creator type. Для изменения значения того или иного свойства используется команда «setraquo; (установить). Стало быть весь скрипт должен выглядеть примерно так:

Таким образом, как видите, можно либо приказать файлу поменять свои (its) свойства (в данном примере слово «its» можно опустить, т. к. назначение команды однозначно определено и без него), либо — программе Finder поменять свойства подчиненного объекта.

«А у Вас нет такого же, но с перламутровыми пуговицами?»

Открытая архитектура скриптов (OSA — Open Script Architecture) позволяет обзавестись практически любым необходимым элементом языка. Конечно, если кто-то позаботился написать «дополнение» (Scripting Addition или OSAX), описывающее такой объект и соответствующие команды. Размещаются эти дополнения в папке Scripting Additions, находящейся в System Folder (раньше — в Extensions). Использовать же их может любой скрипт, независимо от того, какой программой он в данный момент командует.

Что такое AppleScript

Откроем словарь Standard Additions (чтоб быстро попасть в папку Scripting Additions, в диалоге Open Dictionary предусмотрена специальная кнопка). Вот и она — команда «choose file» (выбрать файл). Результатом ее работы будет ссылка на файл, выбранный человеком в стандартном диалоге Open. Эту ссылку мы сохраним в переменной, которую назовем, к примеру, MyFile.

Наш скрипт примет вот такой вид:

Пишем Droplet

Итак, что мы хотим получить, и как этого добиться.

В простейшем случае он будет выглядеть вот так:

Для временного хранения списка мы использовали переменную FileList. Называть переменные можно любыми сочетаниями латинских букв, но желательно так, чтоб по имени можно было понять, что же эта переменная обозначает.

Как видите, обрабатывается первый элемент из переданного при запуске скрипта списка. А остальные? На них наша программа просто не обращает внимания. Не трудно догадаться, что следующим шагом по пути к совершенству будет обработка сразу целой кучи файлов.

До сих пор все команды наших скриптов выполнялись поочередно в том порядке, как записаны. Теперь же нам нужно повторить одни и те же действия несколько раз подряд. Придется организовать особую структуру — цикл. В AppleScript есть для этого разнообразные управляющие команды. Можно повторить действия наперед заданное число раз, либо выполнять их пока соблюдается некоторое условие. Но такими циклами располагает практически любой язык программирования. В нашей же задаче идеально подойдет другой — »повторить для каждого элемента списка». С ним скрипт примет следующий вид:

Чего еще не хватает нашей программе, чтоб стать вполне профессиональной? А не хватает ей «защиты от дурака». Ведь «бросить» на картинку скрипта можно и папки, и ярлыки, а работать он должен только с обычными файлами.

Кого хочешь, выбирай

Стало быть, перебирая элементы списка, нужно определять, чем каждый из них является. Только если попался обычный файл — менять его свойства. Выбрать, делать или не делать какие-либо операции, позволяет еще одна управляющая конструкция — условный оператор If. Определить, не является ли объект папкой или ярлыком, можно, получив информацию о нем командой «info for» из Standard Additions. Результатом ее будет объект класса «file information». Вот его-то свойства — «папка?» (folder) и «ярлык?» (alias) — мы и будем проверять. Поскольку нам необходимо, чтоб элемент не был папкой И не был ярлыком, два условия свяжем логической операцией «and» (когда достаточно выполнения какого-либо одного из условий — ИЛИ первого, ИЛИ второго — пользуются связкой «or»). В общем, в результате наших рассуждений получился вот такой скрипт:

Не забываем, что сохранить его нужно как приложение (application). Ну, вот и все. Наша первая программа готова.

Обратите внимание, что все условия в операторе If должны быть записаны в одну строчку. Чтобы сделать текст программы более удобным для чтения, бывает полезно «сложить» длинную строку, как сделано в этом примере. Для этого нужно нажать комбинацию клавиш «Option-Return». В тексте появится символ продолжения — «¬».

Конечно, за это небольшое занятие я смог только немного познакомить Вас с самыми простыми приемами работы с AppleScript. Но, думаю, Вы убедились, что в этом нет ничего сложного. Пробуйте! Я же надеюсь продолжить эту тему в следующих статьях.

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

Автоматизируй это

Часто встречаются такие задачи, для решения которых делать отдельный проект на компилируемом языке нерационально. Например, когда нужно быстро слепить на коленке код, который должен просто выполнять конкретную работу — без всяких GUI-украшений, обработки всевозможных исключительных ситуаций, оптимизации и прочего. Здесь на помощь и приходят языки сценариев — известные тебе shell, Perl, PHP и так далее. Все они (ну или почти все) доступны и под Mac OS X. Но в этой операционке в дополнение к общепринятым скриптовым языкам есть и специальный язык сценариев, ориентированный именно на Mac OS X и тесно с ней связанный. Это AppleScript.

AppleScript идет вместе с системой начиная с System 7. Выросший из проекта HyperCard (который содержал скриптовый язык HyperTalk, очень похожий на естественный английский), AppleScript первоначально создавался для того, чтобы обеспечить обмен данными между задачами, а также для управления работой сторонних приложений. Сам по себе AppleScript обладает довольно скромной функциональностью: на этом языке даже сценарии для выполнения сравнительно простых задач часто выглядят как обращение к другим приложениям. Впрочем, после существенной перестройки системы при переходе к линейке Mac OS X язык AppleScript стал боле гибким и мощным, а новый фреймворк Cocoa позволил разработчикам встраивать в свои приложения возможность автоматизации с помощью AppleScript’а с минимальными усилиями.

Простой сценарий

Для редактирования и исполнения скриптов мы будем использовать стандартный Script Editor. Найти его можно в папке /Application/AppleScript. Для начала напишем простой «HelloWorld’ный» скрипт.

Объяснять тут, думаю, ничего не нужно, но хочется отметить крайне простой доступ к синтезатору речи из AppleScript c помощью команды say. Вот это и есть настоящее общение с пользователем в стиле Apple :). Конечно же, этот диалог можно легко кастомизировать. Например, добавить нужные кнопки:

Панель с дополнительными кнопками

display alert "Hello World!" buttons
set answer to button returned of the result
if answer is "Hello" then
.
else
.
end if

Теперь напишем что-нибудь более полезное. Например, дадим пользователю выбрать файл и прочитаем его содержимое:

set fileContents to (read theFile)
close access theFile

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

Взаимодействие c приложениями

tell application "Microsoft Word"
quit
end tell

Запускаем нужный плейлист в iTunes

tell application "iTunes"
play the playlist named "My Favorite"
end tell

Чтобы тебе было проще работать с классами и командами, которые экспортирует приложение, они организованы в разделы. Все приложения, которые поддерживают скриптинг, имеют хотя бы два раздела: один стандартный и один из более специфичных для данного приложения разделов. Стандартный раздел содержит набор стандартных команд, которые поддерживает любое Mac-приложение: open, print, close и quit. Содержание остальных разделов зависит от фантазии разработчиков.

Выполнение AppleScript из своего приложения

Если ты пишешь приложение на Objective-C/Cocoa, то возможно, что некоторые вещи будет удобнее сделать с помощью AppleScript. Для создания и выполнения в Cocoa-приложениях скриптов существует класс NSAppleScript. Вот простой пример его использования — реализация получения у приложения iChat строки статуса пользователя.

NSAppleScript *iChatGetStatusScript = nil;
iChatGetStatusScript = [[NSAppleScript alloc] initWithSource: @"tell application "iChat" to get status message"];
NSString *statusString = [[iChatGetStatusScript executeAndReturnError:&errorDict] stringValue];

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

Автоматизация в Cocoa-приложении

Очень полезно добавлять поддержку скриптинга в свои Сocoaприложения, ведь если в твоем приложении есть интерфейс к AppleScript, то пользователь, написав несколько строчек на AppleScript, сможет кастомизировать его для своих нужд и интегрировать с другими приложениями, которые у него установлены, а затем, например, автоматизировать решение рутинных задач. Чтобы экспортировать типы и команды в среду AppleScript, необходимо их описать в специальных файлах. Есть возможность сделать это в файлах .scriptSuite и .scriptTerminology или в одном файле с расширением .sdef. В обоих случаях файлы имеют формат XML, но с sdef работать проще.

Содержимое файла scriptTermonology отображается в Script Editor’е при просмотре словаря приложения. Этот файл содержит описание экспортируемых в AppleScript объектов.

Открыв scriptSuite-файл в Plist Editor’е, можно видеть, что он содержит следующие основные разделы:

  • AppleEventCode — четырехбуквенный код, который идентифицирует приложение для среды AppleScript (код должен быть уникальным в рамках одной системы);
  • Name — имя раздела, который содержит экспортируемые команды и классы.

Разбирать внутреннее устройство этих файлов особого смысла нет, так как тебе скорее всего придется иметь дело только с sdef-файлами.

Пример sdef-файла

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dictionary SYSTEM "file://localhost/System/Library/DTDs/sdef.dtd">
<dictionary title="My Application Terminology">
<!-- Кастомный раздел -->
<suite name="My Application Scripting" code="XXXX" description="Commands and classes">
<classes>
<class name="application" code="capp" description="" inherits="NSCoreSuite.NSApplication">
<cocoa />
<properties>
<!-- экспортируем одно свойство -->
<property name="some value" code="sval" type="string" description="A value">
<cocoa method="value"/>
</property>
</properties>
</class>
</classes>
</suite>
</dictionary>

В sdef’е скриптинг-терминология смешана с подробным описанием команд и типов, которое можно найти в .scriptingSuit-файлах. Реализуем это на практике, создав Cocoa-приложение, поддерживающее AppleScripting. Для этого в новом Cocoa проекте добавим в файл Info.plist флажок Scripting и OSAScriptingDefinition с именем нашего sdefфайла:

.
<key>NSAppleScriptEnabled</key>
<true/>
<key>OSAScriptingDefinition</key>
<string>Scrtipting.sdef</string>

Добавим к проекту файл Scripting.sdef следующего содержания:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dictionary SYSTEM "file://localhost/System/Library/DTDs/sdef.dtd">
<dictionary xmlns:xi="http://www.w3.org/2003/XInclude" title="Scripting dictionary">
<!-- Включим стандартные команды/типы -->
<xi:include href="file:///System/Library/ScriptingDefinitions/CocoaStandard.sdef" xpointer="xpointer(/dictionary/suite)"/>
<suite name="Scripting" code="VVVV" description="Test Scripting">
<class name="applicaton" code="capp" description="">
<cocoa />
<!-- Экспортируем одно readonly свойство у application -->
<property name="myprop" code="Smrp" type="string" access="r"/>
</class>
</suite>
</dictionary>

Eсли мы теперь из AppleScript обратимся к свойствам нашего приложения, то увидим среди них свое свойство и его значение:

tell application "Scripting"
properties
end tell

Заключение

Конечно, описать здесь все возможности AppleScript и его взаимодействия с Cocoa-приложениями невозможно. Да это и не нужно — для этого есть мануалы. А мы со своей стороны продолжим цикл статей о кодинге под эппловские платформы и расскажем тебе еще много нового и интересного.

AppleScript — скриптовый язык, который используется для управления системой, приложениями и файлами в Mac OS X. Наиболее общий принцип применения следующий: открыть приложение и передать ему набор инструкций для выполнения. Причем это не обязательно приложения из стандартного комплекта поставки операционки, многие сторонние приложения также предоставляют API для обращения к ним через AppleScript.


Для редактирования и запуска скриптов есть небольшой редактор, который находится в Application > Utilites > AppleScript Edtior. Редактор довольно минималистичный и не имеет богатых возможностей, но для написания небольших скриптов его обычно оказывается вполне достаточно. Условно его можно разделить на две части: в первой пишется непосредственно сам код, а в нижней части, показывается результат выполнения твоих трудов. Если вдруг возникнет необходимость сделать более или менее серьезный проект, то удобнее будет воспользоваться какой-нибудь сторонней разработкой, например Script Debugger.

Applescript имеет очень простой синтаксис, который был максимально приближен к обычному английскому языку, давай быстро пробежимся по основным операторам, чтобы понимать, как нам выполнять самые базовые вещи.

Чтобы задать переменную нужно воспользоваться оператором set. Делается это так:

Имя переменной не должно совпадать с зарезервированными словами (beep, say и т.д.), а также нельзя начинать имя переменной с цифры.

Условия задаются при помощи оператора if, как и в других языках:

Оператор say произносит переданный ему текст. Вместо «is» можно писать привычный знак равенства.

Задать цикл можно оператором repeat. В самом простом случае достаточно написать:

Этот цикл 2 раза воспроизведет стандартный системный звук. Если нужны итерационные циклы, то их можно задать используя until или while, например:

Арифметический цикл можно задать при помощи with таким образом:

Я думаю, понятно, что этот код будет произносить числа от 1 до 20 с шагом 2. Сейчас я быстро прошелся по основным «школьным» азам, чтобы было понятно что это за язык и с чем его едят. Как видишь, разработчики старались делать его таким, чтобы пользователи с разным уровнем подготовки могли «говорить» с компьютером практически человеческим языком. Я не буду подробно останавливаться на всех особенностях синтаксиса, если возникнут вопросы, ты всегда сможешь найти ответы в документации на сайте Apple.

Диалоги с пользователем

AppleScript не был бы так интересен, если бы не возможность легко создавать различные диалоговые окна, что дает нам возможность сделать наши скрипты более user-friendly.


Давай начнем с вызова стандартного системного диалога выбора файла. Делается это при помощи команды choose file.

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

Такой формат понимают стандартные приложения в Mac OS, но часто требуется использовать привычный нам POSIX-вид, делается это легко:

В переменную posixFilePath путь запишется в виде: /Users/UserName/file.pdf.

Если не было передано никаких параметров, то будет выведен стандартный диалог с кнопками «ОК» и «Cancel». Тут стоит отметить, что после вывода диалога скрипт приостановит выполнение, и продолжит выполняться после нажатия «ОК», а вот после «Cancel» выполнение скрипта будет прервано с соответствующей ошибкой «User canceled.». Если такое поведение в твои планы не входит, то самое простое, — воспользоваться обработчиком ошибок:

Естественно, может такое случиться, что потребуются другие кнопки, кроме «Cancel» и «OK», и ты конечно же волен добавить любые, которые захочешь (но не больше трех). Делается это следующим образом:

А как быть, если требуется дать пользователю выбрать что-нибудь из списка? Легко:

В случае если нужно будет просто ввести какие-либо данные воспользуйся такой строчкой:

Диалоги с софтом

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

Например, очистим корзину:

Чтобы узнать какие действия доступны для того или иного приложения, в AppleScript имеется средство, которое называется Dictionary, оно доступно в меню File > Open dictionary.


Также имеется возможность передачи команд на удаленный компьютер. Для начала, нужно включить опцию Remote Apple Events на машине, где требуется выполнить какие-либо действия в System Preferences > Sharing. Теперь, чтобы выполнить код на другой машине, нужно использовать следующую конструкцию:

Будь готов, что для выполнения действия на удаленной машине скрипт запросит логин и пароль, так что если ты потираешь руки, чтобы творить беспредел, придется придумать что-то еще :).

Командная строка

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

Такой способ имеет право на существование и в отдельных случаях он может быть даже предпочтительнее, но есть другой вариант: воспользоваться командой do shell script, при помощи которой можно также выполнять консольные команды, что гораздо более удобно, так как дает возможность записать результат выполнения команды в переменную и оперировать с ней дальше средствами AppleScript.

Что такое AppleScript? Написание вашего первого скрипта для Mac

Если вы чувствуете себя комфортно в мире сценариев и работаете на Mac, AppleScript может стать для вас решением для автоматизации. AppleScript — это мощный язык, который дает вам возможность управлять любым приложением, если он предоставляет библиотеку AppleScript.

Используйте его для таких повседневных задач, как автоматическое изменение размеров фотографий в Photoshop, переименование папок и блокировка файлов с помощью пароля. Мы покажем вам, как начать его использовать.

Что такое AppleScript?

Как и bash, AppleScript — это язык сценариев. И, как и Automator, он взаимодействует в основном с приложениями и Finder, чтобы автоматизировать задачи для вас. Он выпущен как часть Mac OS System 7, вплоть до 1993 года. С тех пор он находится в папке Utilities .

AppleScript расширился с появлением Mac OS X. Платформа Cocoa значительно упростила разработчикам приложений включение совместимости AppleScript. Эта повышенная гибкость в сочетании со способностью AppleScript напрямую взаимодействовать с командной строкой делает AppleScript одним из лучших инструментов для тинкеров. Это также дает MacOS преимущество над iOS, когда дело доходит до автоматизации.

Обзор предустановленных сценариев AppleScripts

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

Предустановленные скрипты находятся в Macintosh HD> Библиотека> Скрипты. Вы также можете получить к ним доступ, открыв редактор сценариев (найдите его с помощью Spotlight), перейдя в меню «Настройки»> «Основные»> «Показать сценарий» в строке меню , а затем щелкнув значок сценария, отображаемый в строке меню.

Элемент строки меню для редактора скриптов

Вы можете просто запустить один из этих сценариев из строки меню.

Давайте посмотрим на действия с папками. Папка Действие — это AppleScript, который прикреплен к папке. Если этот параметр включен, сценарий будет запускаться для любого файла, добавляемого в эту папку.

Если вы перейдете в Действия с папками> Прикрепить сценарии к папке , всплывающее окно спросит, какой тип сценария вы хотите добавить в папку. Вы можете переворачивать фотографии по горизонтали или вертикали, дублировать их в формате JPEG или PNG, поворачивать их или выдавать предупреждение при добавлении нового элемента.

Предварительно установленные AppleScripts

После того, как вы выбрали свой сценарий и папку, к которой хотите присоединить его, щелкните правой кнопкой мыши на самой папке. Перейдите в раздел «Службы»> «Настройка действий папки» и убедитесь, что установлен флажок «Включить действия папки» . Затем перетащите файл поверх папки, чтобы увидеть, как работает AppleScript.

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

Понимание Сказать Заявление

Уведомление о новом элементе AppleScript

AppleScript использует читабельный синтаксис. Это означает, что по сравнению со многими другими языками программирования он написан в понятном формате. Поскольку он использует полные слова и предложения для отправки команд, его легко понять и легко изучить.

Давайте посмотрим на начальный синтаксис добавления нового элемента alert.scpt в действиях с папками. Это даст представление о самом фундаментальном утверждении в AppleScript: утверждении Tell.

«Сказать заявление» состоит из трех частей:

  1. Слово «скажи»
  2. Объект для ссылки (в данном случае приложение «Finder»)
  3. Действие, которое нужно выполнить (здесь «установите имя_папки в имя этой_папки»).

С точки зрения непрофессионала, оператор Tell выше говорит: «Скажите Finder, чтобы он использовал имя папки, к которой присоединен этот скрипт, всякий раз, когда скрипт запрашивает« this_folder ».

Цель AppleScript состоит в том, чтобы автоматизировать задачи для вас, сообщая приложениям о выполнении задач, которые вы не хотите выполнять самостоятельно. Таким образом, команда «рассказать» имеет важное значение. Вы можете продвинуться далеко в мире AppleScript с помощью только одного «рассказать».

Также обратите внимание: строка, которая говорит --get the name of the folder на самом деле является просто комментарием, сообщающим пользователю, что скрипт делает в данный момент. Комментарии важны — не только для того, чтобы рассказать другим людям, что сделал ваш сценарий, но и для напоминания себе.

Написание вашего первого AppleScript

Диалоговое окно Hello World

Если у вас есть некоторый опыт программирования и вы знакомы с такими понятиями, как переменные, циклы выполнения и условные выражения, вы можете многое узнать об AppleScript за рамками этого введения. Сейчас мы просто покажем вам, как создавать, писать, запускать и сохранять базовый сценарий:

Сохранить скрипт как приложение

С этим простым синтаксисом вы можете сказать почти любому приложению Mac делать практически что угодно. Чтобы просмотреть доступные команды для данного приложения, выберите « Файл»> «Открыть словарь» и выберите приложение. Оттуда вы можете увидеть все доступные команды AppleScript.

Словарь команд Apple для iPhoto

Для более простой автоматизации Mac, используйте Automator

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

Хотя Automator не так настраиваем или сложен, как AppleScript, его проще и сложнее взломать. Взгляните на некоторые рабочие процессы Automator, которые сэкономят ваше время. Экономичные по времени рабочие если вам интересно.

Читайте также: