Automator, часть 2: переменные и циклы, запись, AppleScript

Переменные и циклы

В Автоматоре версии 10.5 (который поставляется с Леопардом) есть два существенных нововведения — циклы и переменные. Циклы позволяют вам выполнить последовательность действий несколько раз, а переменные хранят какие-либо значения для их дальнейшего использования.

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

automator-2-1-small.png

Переменные живут в закладке Variables, по соседству с Actions. Переменные с фиолетовым значком шестеренки — системные, их значение не задается пользователем. Среди системных переменных есть пути к различным пользовательским папкам (Документы, Фильмы и т.д.), простейшие данные о пользователе (имя, адрес эл. почты), а также некоторые системные данные (IP адрес, имя компьютера). Пользовательские переменные служат одной цели — сохранять данные для дальнейшего их использования в скрипте. Скажем, вы создали новую папку в первом действии, и вам нужен путь к этой папке в пятом действии. Нет проблем: выходными данными действия создания папки является путь к этой папке, поэтому мы можем его запомнить, добавив следующим действием Set Value of Variable. Выбираем New variable… в выпадающем списке, задаем имя, и Автоматор создаст новую переменную.

Любую переменную можно использовать в текстовых полях, перетащив ее в поле, либо использовать ее значения в качестве входных данных с помощью действия Get Value of Variable.

automator-2-2-small.png

Запись

Еще одно нововведение в леопардовском Автоматоре — возможность записи действий. По сути эта функция идентична функции записи макросов в приложениях Microsoft Office: вы выполняете последовательность действий в любом Cocoa приложении, Автоматор их запоминает и сохраняет в качестве действия. Запись до безобразия проста: жмем Record в верхнем правом углу, выполняем действия, жмем Stop. Тут, наверное, нужно пояснить, что такое Cocoa приложения. Просто говоря – если приложение выглядит как родное OS X приложение, то оно, скорее всего, написано с помощью Cocoa. Примерами не-Cocoa приложений являются продукты компании Adobe и любые Java приложения: у них все действия с интерфейсом обрабатываются не операционной системой, а самой программой, поэтому Автоматор эти действия перехватывать не может. Записывая макросы, учтите, что Автоматор скурпулезно записывает все действия с интерфейсом, клавиатурой и мышью, поэтому записать только то, что нужно, не больше и не меньше, может быть довольно непростой задачей.

AppleScript

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

Как я уже упоминал, Автоматор является интерфейсом к AppleScript — скриптовому языку, разработанному Apple. По сути действия в Автоматоре – это небольшие скрипты AppleScript в обертке. Стараниями Apple AppleScript очень похож на английский, что упрощает понимание языка теми, кто с программированием не знаком; программисту же AppleScript может очень сильно не понравиться — многие концепции и парадигмы из классических языков программирования здесь работают не так, как обычно, и вообще некоторые вещи в AppleScript выглядят довольно странно. Бывалый программист спросит «А надо ли?» и пойдет писать #!/usr/bin/perl. Надо или нет – это уж решать вам, а мое дело — показать.

Писать скрипты будем в Script Editor — программе, встроенной в OS X.

automator-2-3.png

Думаю, читателю понятно, что делают эти четыре кнопки (кнопку Bundle Contents я пока опускаю — про нее попозже). Стоит только упомянуть, что Record здесь действует по принципу, практически обратному Автоматору — записываются не все нажатия клавиш, а лишь действия, изменяющие состояние программы или открытого в ней документа. Работает запись с избранными программами, причем как-то не совсем так, как от нее ждешь, поэтому не думайте, что она решит все ваши проблемы, она может все лишь усложнить.

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

Hello World

Начнем наше знакомство с AppleScript с простейшего скрипта, который очищает содержимое мусорной корзины. Итак, в Script Editor пишем

tell application "Finder"

    empty trash

end tell

Не было бы закрывающего end tell – было почти грамматически корректное английское предложение. Итак, что тут к чему? Поскольку за хранение и чистку мусора отвечает Finder, мы должны наши инструкции передать именно этому приложению, поэтому заключаем инструкции в блок tell.

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

  • Александр

    Немного не в тему, но… рекомендую на папку, куда сохраняются скриншоты, повесить action для удаления цветового профиля, как минимум :)

  • Давид

    статья +1

    подробнее про аэпскрипт и какие там команды
    вопрос с автоматическим запуском мейлом все еще стоит

  • полезно. Но вот так сразу корзину очищать ;) Надо было с чего-то более безопасного начать.