AppleScript для абсолютных новичков. Панель с дополнительными кнопками

AppleScript – мощный язык программирования, появившийся еще в Mac OS 7. Однако, несмотря на зрелость этого продукта, опытные программисты для Мака часто критикуют AppleScript за то, что он слишком прост, легок в изучении и слишком похож на обычный английский язык.

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

Программы AppleScript (называемые сценариями, или скриптами) можно считать программными роботами. Простой сценарий AppleScript может выполнять какие-то повседневные задачи вроде создания резервной копии папки Documents. Более сложный сценарий может занимать несколько страниц. В профессиональных издательствах, где сценарии AppleScript наиболее популярны, сценарий может подключиться по Интернету к жесткому диску фотографа, получить фотографию из указанной папки, выполнить цветокоррекцию в Photoshop, вставить результат в указанный документ верстки, распечатать черновой макет, отправить уведомление по электронной почте редактору – и все это выполняется автоматически.

Даже не зная об этом, пользователь постоянно применяет базовую технологию AppleScript. Многочисленные компоненты Мака за кадром общаются посредством событий Apple Events, т. е. сообщений, передающих инструкции или данные от программы к программе. Если к псевдониму применяется команда Show Original (Показать оригинал) или к файлу (папке) – команда Get Info (Свойства), то событие Apple Event подскажет Finder, как следует откликнуться на это.

AppleScript в ряде отношений превосходит Automator, не в последнюю очередь – изза своей мощи. И еще: AppleScript – столь глубокая тема, что ему следовало бы посвятить отдельную книгу. Эта глава – всего лишь аппетитная закуска: книга типа «AppleScript: основное руководство» была бы обедом из семи блюд.

Совет Можно загрузить целую главу об AppleScript – появившуюся в предыдущем издании этой книги – со страницы Missing CD на сайте www.missingmanuals.com.

Для того чтобы вкусить плодов этой технологии, необязательно создавать сценарии AppleScript. В состав Mac OS X входит несколько десятков готовых сценариев, которые действительно полезны, а чтобы выполнить любой из них, достаточно выбрать его имя в меню. Такое «воспроизведение» сценария AppleScript требует ровно столько же технических навыков, сколько нажатие кнопки в лифте.

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

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

Совет Если во время выбора имени сценария в меню нажата клавиша Shift, Mac OS X перенесет вас прямо туда, где этот сценарий находится в Finder (например, в папку Home>Library>Scripts). Более того, если при выборе имени нажать клавишу Option, сценарий откроется в Script Editor, где его можно изучить или отредактировать.

Это подменю содержит только сценарий Import Addresses, предназначенный для копирования в программу Address Book имен и адресов из Entourage, Outlook Express, Palm Desktop, Eudora, Claris Emailer или Netscape. Если у вас много друзей, воспользуйтесь этим сценарием, и тогда вам не придется заново вводить все их имена, номера телефонов и почтовые адреса. (Сопутствующая подпапка Address Importers предлагает сценарии для импорта из трех конкретных программ.)

Подменю Basics содержит три маленьких удобных сценария, относящихся к AppleScript: AppleScript Help (открывает Help Viewer и ищет слово AppleScript); AppleScript Website (открывает веб-страницу AppleScript в вашем веб-броузере); Open Script Editor (открывает программу Script Editor, предназначенную для чтения и редактирования сценариев AppleScript).

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

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

Другие действуют немедленно; например, сценарий Mimic PC monitor настраивает цвета экрана так, чтобы они близко соответствовали немного отличающимся оттенкам на мониторе компьютера сWindows. Это очень удобно, если вы работаете над

КУРСЫ ОПЫТНЫХ ПОЛЬЗОВАТЕЛЕЙ
Тайны меню скриптов
В меню скриптов отражается содержимое двух разных папок Scripts: одна из них – это Home>Library>Scripts, а другая находится в главной папке Library. Те сценарии, которые взяты из вашей личной папки, в меню сценариев отделены пунктирной линией.

Эти сценарии можно не только запускать. Они также идеальны для того, чтобы открыть их в редакторе Script Editor (просто двойным щелчком) и проанализировать строка за строкой, как они работают. Разобравшись в синтаксисе, вы можете копировать фрагменты кода и, изменив, использовать в своих сценариях. (Script Editor – это программа, находящаяся в папке Applications> AppleScript, с помощью которой можно создавать собственные сценарии.)

Фотографией или веб-страницей и хотите узнать, как они будут выглядеть в глазах непросвещенных масс. (Чтобы восстановить исходные цвета, зайдите на вкладку Color (Цвет) пульта Display (Мониоры) в окне System Preferences (Системные настройки).)

Все эти сценарии относятся к работе в Finder – скажем, к манипуляциям с файлами и окнами. Вот наиболее полезные из них:

Add to File Names, Add to Folder Names. Эти сценарии прикрепляют префикс или суффикс к имени каждого файла или папки в переднем (активном) окне Finder (или, если нет открытых окон, на рабочем столе). С помощью этих сценариев можно к именам всех файлов некоторой папки добавить слово «черновой» или «окончательный», или «старый».

Replace Text in Item Names позволяет выполнить поиск с заменой в именах файлов, папок или тех и других сразу. Если один издатель отклонил предлагаемую вами книгу из 45 глав, с помощью этого сценария можно переименовать все 45 глав: скажем, была «История ковриков для мыши – предложение для Random House, глава 1», а стала «История ковриков для мыши – предложение для Simon & Schuster, глава 1».

Trim File Names, Trim Folder Names. Если вы ошиблись, когда запускали сценарий Add to File Names, то всегда сможете все исправить с помощью Trim File Names. Этот сценарий удаляет расширения файлов, суффиксы или префиксы по выбору пользователя.

Допустим, вы только что создали сразу несколько новых папок. Mac OS X дает таким папкам имена «untitled folder», «untitled folder 2» и т. д. Но что если вас больше устраивают имена «folder 1», «folder 2» и т. д.? Запустите сценарий Trim Folder Names; в диалоговом окне наберите untitled и нажмите кнопку OK.

Едва ли вы будете активно пользоваться сценариями Folder Actions (Действия папки), поскольку точно такой же доступ к операциям над папками предоставляет Control-щелчок на папке (или внутри ее окна)

Эти сценарии демонстрируют, каким образом можно автоматизировать некоторые задачи, связанные со шрифтами.

FontSync – это благородная попытка Apple разрешить старую проблему настольных издательств. Вот вы закончили создание красивого информационного бюллетеня и несете его в местную типографию, чтобы напечатать на высококачественном оборудовании, и тут обнаруживаете, что придется выбросить оттиски и начать все сначала – и только из-за того, что шрифты выглядят совсем не так, как вы хотели. В типографии не оказалось в точности таких шрифтов, какие вы использовали для подготовки документа. Или, что еще хуже, шрифты имели ровно те же названия, но были созданы другой компанией, а потому слегка отличались от ваших определенными параметрами.

Идея FontSync в том, чтобы заранее уведомить пользователя о возможных нестыковках. Сценарий Create FontSync Profile за несколько минут создает файл профиля FontSync. Этот документ содержит ошеломляющее количество информации о дизайне, разрядке и завитушках всех шрифтов, установленных в системе. В типографии такой документ можно обработать дополнительным сценарием Match FontSync Profile. Он скрупулезно выявит различия шрифтов на Маке пользователя и машинах типографии.

Разумеется, технология эта неявно предполагает слишком многое: что в типографии установлены компьютеры Макинтош, что там умеют обращаться с FontSync, и еще – что пользователь не забудет предварительно создать и передать в типографию профиль FontSync.

IChat подвергся в 10.5 существенной переработке – Apple добавила массу интересных (хотя иногда бесполезных) функций. В том числе стало возможным запускать в качестве сигналов сценарии AppleScripts, когда происходит некое событие, связанное с вашими контактами. Например, можно автоматически принимать приглашения в чат от отдельных контактов или даже отвечать им заранее заготовленным приветствием. Можно даже управлять воспроизведением музыки на одном Маке, вводя команды в окно iChat другого Мака, находящегося у вас дома. Детали в главе 21.

Польза этих двух сценариев невелика. Current Date & Time отображает текущую дату и время в диалоговом окне, оснащенном кнопкой Clipboard (Буфер обмена) для копирования информации, готовой к вставке. Font Sampler выводит страницу с перечнем шрифтов (названия которых записаны в сценарии), устанавливающихся с Mac OS X. (Сценарий стал менее полезен, поскольку в Font Book появились аналогичные встроенные команды печати.)

Два сценария в этом меню заслуживают особого упоминания. Current Temperature by Zipcode показывает, какая температура за окном – по Фаренгейту и по Цельсию. Это лишний повод весь день не выходить из дому.

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

Большинство сценариев в этом подменю решает некоторую конкретную задачу типа подсчета писем в ваших электронных почтовых ящиках или настройки новой учетной записи. Забавнее всех, конечно, сценарий Crazy Message Text (рис. 7.17).

Сценарии из этой папки позволяют вам перейти в специальные папки Finder – прямо из меню, из любой программы. Если папке, которую нужно открыть, не назначен свой сценарий, выберите ее из списка в сценарии Open Special Folder.

Совет Те, кого не смущает необходимость редактировать этот сценарий с помощью Script Editor, могут изменить его таким образом, чтобы он позволял выбирать и открывать больше одной папки одновременно (посредством, скажем, сочетания -щелчок). Надо лишь набрать текст multiple selections allowed true сразу после слов Choose folder to open: (в конце строки, расположенной примерно в начале второй трети сценария). Не забудьте сохранить изменения.

Эти сценарии должны продемонстрировать мощь AppleScript в области печати и создания документов PostScript и PDF.

Один из них, Print Window, закрывает давний пробел в Mac OS X. Он должен печатать текстовый список содержимого любой выбранной папки. (Правда, он немного глючит.)

Как сообщает команда About these scripts, эти 48 готовых сценариев помогают писать более быстрые и точные сценарии, поскольку во фрагментах кода нет опечаток и синтаксических ошибок. Совершенствуясь, вы сможете добавлять сюда собственные сценарии с фрагментами кода, ориентированного на те сценарии, которые вы обычно пишете, чтобы сделать свою работу еще более эффективной. (Создавая сценарий в Script Editor, вы вставляете эти фрагменты кода в текст с помощью комбинации Control-щелчок и выбора в меню быстрого доступа.)

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

Примечание Это средство, называемое сценариями интерфейса пользователя (UI, user-interface), будет действовать только после того, как вы откроете пульт Universal Access (Универсальный доступ) программы System Preferences (Системные настройки) и установите флажок Enable access for assistive devices (Разрешить доступ для вспомогательных устройств).

Нет смысла запускать сценарии из подменю UI Element Scripts в том виде, как они есть: это лишь образцы, демонстрирующие правильный синтаксис.

Этот последний набор сценариев обеспечивает быстрый доступ к некоторым популярным веб-сайтам. Исключение составляет сценарий Download Weather Map, который загружает текущую карту погоды континентальной части Соединенных Штатов, сохраняет ее на рабочем столе в файле weathermap.jpg, а затем открывает в Preview.

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

С другой стороны, если вы станете добавлять в меню Script массу своих пунктов, удобнее будет убрать из него образцы от Apple. Нет проблем. Откройте AppleScript Utility и сбросьте флажок Show Computer scripts.

Работа с готовыми сценариями AppleScript

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

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

Изучение AppleScript можно начать с просмотра простого сценария. Откройте, например, сценарий New Application Window (В категории Navigation Scripts), щелкнув по его имени при нажатой клавише Option. В результате Script Editor откроет файл в новом окне (рис. 7.18).

Вот как работает этот сценарий:

Tell application «Finder» сообщает Mac OS X, какая программа должна выполнить следующие команды.

Activate выводит Finder на передний план – как если бы вы щелкнули по его пиктограмме в Dock.

Open folder «Applications» of the startup disk дает Finder команду открыть новое окно, отображающее папку Applications главного жесткого диска.

End tell приказывает Finder заняться своими делами и не обращать внимания на дальнейшие команды вашего сценария.

Чтобы протестировать сценарий, щелкните по кнопке Run или нажмите -R.

Совет Можно отредактировать этот сценарий так, чтобы он лучше подходил к вашим потребностям. Попробуйте, например, заменить «Applications» на «Users», чтобы сценарий открывал папку Users.

Создание собственных сценариев AppleScript

Mac OS X поставляется с десятками программ – каких только среди них нет! Ладно, кое-чего нет – метронома, например. Как же вы собираетесь играть на пианино в ровном ритме, не слыша ритмичных щелчков, издаваемых вашим Маком? Конечно, в крайнем случае поможет метроном GarageBand, но это пальба из пушки по воробьям.

Вместо этого можно использовать AppleScript. Откройте новый документ в Script Editor (File (Файл)>New (Новый), или -N) и напечатайте следующее:

display dialog "Welcome to the AppleScript Metronome"

set bpm to the text returned of (display dialog ¬

"How many beats per minute?" default answer 60)

set pauseBetweenBeeps to (60 / bpm)

delay pauseBetweenBeeps

Примечание Печатать символ ¬ не нужно. Так программисты сообщают: «Это должно быть на одной строке, но не хватило ширины страницы».

При выполнении этого сценария появляется диалоговое окно с вопросом о том, сколько ударов в минуту должен отсчитывать метроном. Введенное вами число (например, 120) сохраняется в переменной – временном хранилище внутри сценария, которое названо bpm.

Затем сценарий рассчитывает величину паузы между сигналами и записывает эту долю секунды в переменную pauseBetweenBeeps. Если вы сообщили сценарию, что нужно издавать звуковой сигнал, например, 120 раз в минуту, то в pauseBetweenBeeps будет записано значение 0.5, потому что между отсчетами должна быть пауза, равная половине секунды.

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

Щелкните по кнопке Run, чтобы протестировать свой сценарий, а когда вдоволь наслушаетесь звуков, щелкните по кнопке Stop.

МОИ ЛЮБИМЫЕ ПРИЕМЫ
Вложения с рабочего стола одним щелчком
Вот маленький трюк с Automator, который может оказаться спасительным для каждого, кому часто требуется посылать документы электронной почтой. (Он моделирует весьма удобную команду Send To (Отправить), имеющуюся в меню быстрого доступа Windows-машин.)

Создайте в Automator процесс всего из двух шагов: Get Selected Finder Items (в категории Finder) и New Mail Message (в категории Mail).

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

Теперь выберите File (Файл)>Save As Plug-in (Сохранить как модуль). Назовите процесс Email This (Отправить по Email) или как захотите.

С этого момента можно отправить документ из Finder, щелкнув по нему при нажатой клавише Control и выбрав в появившемся меню Automator>Email This.

Победа! Mac OS X запускает Mail и создает исходящее сообщение, к которому уже прикреплен файл.

Бесплатный совет: если между этими двумя действиями вставить еще одно Create Archive action (из категории Finder), то ваша команда меню еще и сожмет файл (или папку) в.zip-файл перед тем, как отправить его по почте!

Совет Еще круче будет, если выставить в системных настройках флажок System Preferences (Системные настройки)>Universal Access (Универсальный доступ)>Hearing (Слух)>Flash the screen when an alert sound occurs (Вспышка экрана при звуке предупреждения). Теперь при работе вашего сценария вместе со звуком будет вспыхивать экран. Если вы записываете музыку, заглушите свой Мак: у вас будет визуальный метроном, а звуковой сигнал слышен не будет.

Сравнение AppleScript и Automator

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

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

Automator годится для простых задач. Если же для автоматизации Мака вам потребуется AppleScript, не отчаивайтесь. Вы беретесь за действительно мощный инструмент. (Можно даже объединить их и встраивать сценарии AppleScripts в процессы Automator посредством действия Run AppleScript.)

Успехов в автоматизации!

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

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

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

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

tell application «Finder»
make
end tell

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

Объекты, свойства, события…

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

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

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

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

— любой текст, записанный после «двух минусов»,
— считается комментарием;
— на него компьютер не обращает внимания
tell application «Finder»
— словом tell начинается группа команд,
— относящихся к одному объекту
make new folder at desktop with properties {name:»Моя!», label index:2}
end tell — а так завершается группа команд
tell application «Finder» to tell item «Моя!»
open
set its name to «Только для меня»
end tell

Мы сперва приказываем программе Finder создать новый объект класса «папка», расположенный на Столе. Часть свойств задано в команде (имя папки и ее цветная метка), остальные будут назначены компьютером по умолчанию. Затем говорим Finder’у, чтоб он скомандовал своей папке (так и только так: «вассал моего вассала - не мой вассал») открыться и сменить имя.

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

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

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

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

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

Словари, словари, словари…

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

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

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

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

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

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

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

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

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

Ну, вот. Вы уже можете попробовать написать какой-нибудь простой скрипт. Итак…

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

Думаю, Вы знаете, что каждый файл на Макинтоше обладает двумя признаками - типом и кодом создателя, позволяющими Finder’у решить, как с этим файлом обращаться. Не секрет и то, что нередко - например, после передачи через Интернет - эти атрибуты теряются. Конечно, есть немало программ, умеющих их изменять. Но давайте попытаемся сделать свою собственную утилиту, пользуясь только тем, что уже заложено в Mac OS.

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

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

tell application «Finder» to tell file «letter.txt»
set its file type to «TEXT»
set its creator type to «ttxt»
end tell

Или вот так:

tell application «Finder»
set file type of file «letter.txt» to «TEXT»
set creator type of file «letter.txt» to «ttxt»
end tell

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

Я не зря задал условие, что файл находится на рабочем столе. В ином случае нам потребовалась более длинная «цепочка» подчиненных объектов (что-то вроде «tell application «Finder» to tell disk «Macintosh HD» to tell folder «lesson» to tell file «letter.txt»»). Или же - для второго варианта скрипта - указание полного пути : «file «Macintosh HD:lesson:letter.txt»» (Напомню: путь в Mac OS записывается через двоеточия).

Что ж, скрипт написан. Он работает. Но& пользы от него, прямо скажем, никакой - ведь для каждого следующего файла нужно изменять текст самого скрипта. Ничего себе, упростили работу! Надо бы нашу программу усовершенствовать. Научим ее спрашивать пользователя, какой файл обрабатывать. Открываем словарь Finder’а, смотрим& Вот те на! Ничего подходящего. Неужто Apple допустила такую промашку? Вовсе нет…

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

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

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

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

tell application «Finder»
set MyFile to choose file
set file type of MyFile to «TEXT»
set creator type of MyFile to «ttxt»
end tell

Вполне работоспособная программка. Но нельзя ли сделать ее более удобной? Зачем отдельно запускать скрипт, потом выбирать в диалоге имя файла - не лучше ли использовать метод Drag’n’Drop? Все в наших силах!

Пишем Droplet

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

  1. Программа должна работать независимо от редактора скриптов. С этим все ясно, мы уже знаем, что для этого ее нужно сохранить как апплет.
  2. Цель работы скрипта - изменение свойств заданного файла. Эта часть у нас уже готова.
  3. Обрабатываться должен файл, «натащенный» на картинку скрипта. Вот тут и начинается самое интересное. С «живущими» в нашем компьютере объектами постоянно происходят разные события . Например файл может быть перемещен, скопирован или открыт. Программа - запуститься, выполнять какие-либо команды или не делать ничего, наконец - завершиться. Чтобы объект «знал», как ему реагировать на то или иное событие, нужна специальная подпрограмма - «обработчик» (handler). Когда на апплет «бросают» файлы, папки или диски, Finder передает ему сообщение-команду «Open» и список «брошенных» объектов. Вот для этого-то события нам и придется написать обработчик.

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

on open FileList — словом «on» начинается обработчик события
— сперва скрипт работает сам, не затрагивая никаких программ
set MyFile to item 1 of FileList
tell application «Finder» — теперь командуем Finder’ом
set file type of MyFile to «TEXT»
set creator type of MyFile to «ttxt»
end tell
end open — не забываем указать, что обработчик закончился

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

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

Раз, раз, еще раз…

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

on open FileList
repeat with MyFile in FileList — так записывают начало цикла
tell application «Finder»
set file type of MyFile to «TEXT»
set creator type of MyFile to «ttxt»
end tell
end repeat — конец управляющей структуры обязательно отмечаем
end open

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

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

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

on open FileList
repeat with MyFile in FileList
set theInfo to info for MyFile
if (folder of theInfo is false) and ¬
(alias of theInfo is false) then
tell application «Finder»
set file type of MyFile to «TEXT»
set creator type of MyFile to «ttxt»
end tell
end if
end repeat
end open

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

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

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

Не похоже на творческую деятельность, не правда ли? А ведь практически каждому, имеющему дело с компьютером, за день приходится выполнять десятки и сотни повторяющихся, одинаковых по сути своей операций. И поработав недельки три эдаким "интеллектуальным конвертором", уже не то, что учить новую версию "Фотошопа" или осваивать InDesign, - не хочется даже близко подходить к компьютеру. Одним словом - нужен помощник. Который и возьмет на себя выполнение всех (ну, или хотя бы большинства) скучных и рутинных, но, безусловно, - нужных повторяющихся действий.

AppleScript - что за зверь?

И такой помощник у нас есть. Это специальный язык для написания скриптов (или, если вам будет угодно, - сценариев) под названием AppleScript. Впервые этот язык появился в Mac OS 7.5 (тогда еще Macintosh System), и был настолько качественно реализован, а также обладал настолько широкими возможностями, что к выходу десятой версии ОС он "дотянул" всего лишь до версии 1.8. Но, как ни странно, не смотря ни на свои огромные потенциальные возможности, ни на более, чем десятилетнюю историю существования, технология AppleScript так и не получила широкого распространения среди Мак-юзеров. Что тому виной - мифы о его сложности, косность пользователей, привыкших исключительно к "пиктограммно-мышиному" управлению своих Маков, или что-то еще, - судить не берусь, но факт есть факт: о существовании AppleScript знают сотни, а используют его лишь единицы. Поэтому не лишним, на мой взгляд, будет рассмотреть основные принципы работы этой технологии.
В основе AppleScript лежит Macintosh Apple Events - служба обработки системных событий, - которая позволяет обмениваться управляющими командами, данными и запросами между приложениями, операционной системой, сетевыми службами и даже различными компьютерами. Обработчик сценариев (который представляет собой обыкновенное расширение (Extension), расположенное в папке System) преобразует команды сценария в последовательность событий, и передает их указанному в сценарии приложению, а после их обработки принимает результат, и пересылает его источнику сценария.
Хотя AppleScript и является настоящим языком программирования (он поддерживает переменные, цикли, операторы условий, подпрограммы, позволяет производить сложные расчеты, и даже имеет средства для построения и обработки диалоговых окон), выполнение основных задач ложится все же на плечи внешних приложений. А AppleScript выступает в роли своеобразного "клея", который занимается пересылкой данных между программами ("передать файл из Иллюстратора в Фотошоп"), оценивает текущее состояние рабочего окружения отдельных программ, ОС и сети ("растеризация файла уже завершена, или еще нет?"), и позволяет предпринимать действия, основанные на результатах предыдущих операций ("если все файлы растеризированы, то оправить материалы в специальную папку, и запустить скрипт, отвечающий за сборку газетной полосы").
Существует несколько уровней "сценарности" приложений. Так, к примеру, те программы, которые к автоматизации приспособлены в наименьшей степени, понимают только основные, простейшие, команды: загрузить приложение, открыть документ, отправить на печать и закрыть приложение (run, open, print и quit). Более "сговорчивые" (такие, например, как Photoshop, Illustrator и FreeHand) имеют в своем арсенале средства, которых вполне достаточно для написания программ пакетной обработки файлов и выполнения определенных последовательностей действий (макрокоманд). Ну а те, в которых реализована поддержка практически всех возможностей технологии AppleScript (а сюда входят пакеты QuarkXPress, Adobe InDesign и большинство программ компании Apple) дают возможность контролировать свою работу на самых "глубинных" уровнях: устанавливать параметры печати, использовать буфер обмена, проверять и изменять значения внутренних переменных, и т.д.

Основы скриптологии

Для ввода исходных текстов и выполнения скриптов можно воспользоваться программой Script Editor - основным и единственным средством для создания сценариев в стандартной поставке Mac OS.
Редактор сценариев находится в папке Apple Extras/AppleScript (для локализованной версии Mac OS - Дополнения/AppleScript), и после запуска выдает окно, подобное тому, что изображено на рис. 1.


Рис. 1. Редактор сценариев Script Editor

Верхнее и нижнее поля ввода предназначены для описания сценария и его текста соответственно, и в дополнительных комментариях вряд ли нуждаются. Кнопка Record позволяет записать макрокоманду, для этого надо после нажатия кнопки перейти в нужное приложения, и совершить ряд действий; после чего в нижнем поле ввода появится текст скрипта (необходимо заметить, что возможность записи макрокоманд поддерживается далеко не всякой программой). Кнопка Check Syntax проверяет, нет ли в тексте сценария ошибок, а также приводит его в "товарный" вид - полужирным шрифтом и отступами выделяет ключевые слова и вложенные блоки.
Сценарий первый. Для начала, как и положено, напишем простейшую программу, которая выполняет несколько элементарных действий: закрывает все открытые окна, удаляет из носителей все сменные диски, упорядочивает на экране иконки, проводит очистку корзины и выключает компьютер. Текст такой программы имеет следующий вид:

tell application "Finder"

Close every window
eject every disk
clean up desktop
empty trash
shut down

End tell

Что все это значит? Служба Apple Events ("основа" технологии AppleScript) передает данные, запросы и сообщения не просто между программами, а между элементами программ, которые называются объектами, и могут иметь вложенную структуру, называемую объектной моделью. Так, например, для программы Finder объектную модель (точнее, всего лишь одну из ветвей этой модели) можно представить в следующем виде: Finder - Desktop - Folder - File; для текстового редактора эта модель примет вид Документ - Страница - Абзац - Предложение; для векторной иллюстрации она будет выглядеть как Иллюстрация - Базовая фигура - Кривая Безье - Точка (рис. 2).


Рис. 2. Примеры объектных моделей

Каждый объект, как правило, имеет одно или несколько свойств (рис. 3), которые можно устанавливать ("установить высоту страницы в 14 дюймов"), изменять ("изменить ширину с 8 до 8,5 дюймов), и контролировать ("чему равно правое поле страницы?").).


Рис. 3. Свойства объекта

Для того, чтобы контролировать тот или иной объект, его необходимо выделить (указать) на объектной модели. Для этого служит конструкция tell end tell , и все команды, управляющие объектом, заключаются внутрь этой конструкции; если объект находится "в глубине" одной из ветвей модели, то применяется несколько вложенных друг в друга блоков tell end tell . В следующем примере скрипт поэтапно получает доступ к рабочему столу (это один из элементов объектной модели программы Finder), а затем перемещает папку "test", которая находится на рабочем столе, в корзину.

tell application "Finder"
tell desktop

Delete folder "test"

End tell
end tell

При написании скрипта, управляющего любой программой - неважно, Finder это, FileMaker, Adobe Acrobat или что-то другое, - необходимо знать, какие команды языка AppleScript поддерживает эта программа, какие объекты входят в ее объектную модель, а также названия и назначение всех свойств доступных объектов. Все эти сведения хранятся непосредственно в исполняемом файле той или иной программы, в так называемом словаре приложения (application dictionary). Чтобы воспользоваться этим словарем, в программе Script Editor надо выполнить команду File / Open Dictionary (Файл / Открыть словарь), и в появившемся окне выбрать исполняемый файл интересующего приложения. В результате на экран будет выведено окно, подобное тому, что изображено на рис. 4 - в правой части находится список всех команд и объектов, в левой части приведены их краткие описания.


Рис. 4. Словарь приложения

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

tell application "Finder"

Выделяем (указываем) нужный файл
select file "index.html" of folder "Current web-site" of desktop
-- переменной myFile присвоим путь к выделенному файлу
set myFile to the selection as string

Загружаем Microsoft IE, и открываем выбранную страницу
tell application "Internet Explorer 3.01"
open{alias myFile}
end tell

Ту же операцию проделываем с Netscape Navigator
tell application "Netscape Navigator 3.01"
open {alias myFile}
end tell

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

Команда "select" имитирует явное выделение элемента курсором мышки, и ее действие отчасти напоминает применение конструкции tell end tell , но с той разницей, что при применении команды select мы можем присвоить некоторые свойства выделенного объекта (например, путь файла или папки) переменной.

Оператор set служит для указания значений переменным, которые создаются в момент первого к ним обращения. То есть, не надо описывать предварительно имя и тип переменной: написали, к примеру, set myDate to the current date , а AppleScript и переменную создал, и размер ей нужный подобрал, и тип. Но это еще не все: при помощи оператора set можно изменять все свойства объектов. Делается это следующим образом:

tell application "Finder"
tell desktop
tell file "Прайс-лист"

-- изменяем свойство comment (комментарий) файла "Прайс-лист"
-- файл находится на рабочем столе
set comment to "Этот прайс-лист устарел!"

End tell
end tell
end tell

Или то же самое, только при помощи команды select:

tell application "Finder"

Select file "Прайс-лист" of desktop
set comment of selection to "Этот прайс-лист устарел!"

End tell

Как вы могли заметить, до сих пор все работы со скриптами - набор исходного текста и выполнение, - проводились исключительно при помощи специального редактора. Этот способ хорош, когда нужно создать новый скрипт, или переделать старый. Но для повседневного использования он никуда не годится - пока откроешь Script Editor, пока отыщешь на дисках нужный сценарий, то невольно подумаешь - а не будет ли быстрее ту же работу выполнить вручную, без всякой автоматизации? Разработчики AppleScript позаботились об этом - сценарии могут хранится не только в виде текстовых файлов, но и в откомпилированном виде, полностью пригодные к автономному исполнению. Для того, чтобы перевести сценарий в исполняемый код, нужно в редакторе сценариев выполнить команду Save As Run-Only (Сохранить как программу). В появившемся диалогом окне (подобном тому, что можно увидеть на рис. 5) в выпадающем списке выбрать Application (Программа); сбросить чекбокс Stay Open (Оставить открытым - если не включать эту опцию, то после выполнения скрипт автоматически завершит свою работу, в противном случае он останется в памяти компьютера), и отметить чекбокс Newer Show Startup Screen (Не показывать Экран загрузки). После того, как вы совершили все описанные действия, запуск сценария не вызовет у вас никаких затруднений: просто наведите на него курсор мышки, и дважды нажмите на кнопку.


Рис. 5. Сохранение сценария в виде исполняемой программы

Сценарий третий, и последний. Наверняка о пользе резервного копирования слышали многие. А те, кто хоть раз в жизни потерял результаты своего месячного (на худой случай - хотя бы недельного) труда, уж точно знают, что лучше потратить каждый день 15 минут на архивирование нужных файлов, чем потом рвать на голове волосы и посыпать пеплом свой монитор. Но, как правило, даже после потери важной информации люди не меняют своих привычек: скажешь, бывало, себе - "Все, с сегодняшнего дня делаю копии всех файлов!". А пройдет неделя-другая - и программы вроде "не глючат", да и времени свободного нет, - "И зачем мне то резервное копирование! И так сойдет". Чтобы немного упростить жизнь всем тем, кто хочет видеть свои файлы целыми и невредимыми, но не очень любит работать с программой StuffIt, напишем скрипт, который ежедневно будет архивировать все нужные данные, и складывать их на специальном диске. Вот исходный текст такой программы:

tell application "Finder"

Указываем диск и папку, в которой хранятся все файлы
-- для архивации
set myArhiveFolder to the "Mac OS:Сurrent work:"
-- указываем папку, где хранятся архивы
set myTargetFolder to the "For arhives:Publish Arhive:"
-- назначаем имя будущего архива
-- (в качестве имени выступает текущая дата)
set myFile to the date string of the (current date) & ".sit"
-- создаем полное имя файла (путь + имя)
set myArhiveFile to the myTargetFolder & myFile

Если файл с таким именем уже существует
-- (то есть резервном копирование сегодня проводилось)
-- то просто заканчиваем работу скрипта
if not (exists (file myArhiveFile)) then

Если файла с заданным именем еще не существует,
-- то загружаем StaffIt Deluxe и проводим архивирование,
-- и сразу же выгружаем StuffIt из памяти
tell application "StuffIt Deluxeк"

Activate
make new archive with properties {pathname:myArhiveFile}
stuff {alias myArhiveFolder} into archive 1
close archive 1
quit

Приведенный сценарий упрощает процедуру резервного копирования, но еще не настолько, как хотелось бы - для запуска архивирования придется искать этот сценарий (на дисках или на рабочем столе), и выполнять его. Чтобы полностью автоматизировать работу, надо откомпилировать скрипт, и сохранить его в папке System/Shutdown Items (Системная папка/Элементы выключения). Теперь при каждом выключении компьютера будет автоматически загружаться архиватор, и сохранять все важные файлы на специальный диск. Надо отметить, что архивирование будет проводится только один раз в сутки, независимо от того, работал ли компьютер 20 часов к ряду, или перезагружался через каждые полчаса - при помощи оператора условия if end if мы проверяем, стоит ли проводить архивацию, или лучше все же повременить. До следующих суток.

А дальше?..

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

Существуют два основных источника информации о технологии AppleScript. Первый - официальный сайт компании Apple Computer, точнее раздел сайта, посвященный всему, что связано со сценариями: техническая документация, учебники, примеры, коллекции ссылок и многое другое. Адрес этого раздела - http://www.apple.com/applescript/ . Настоятельно советую первым делом загрузить себе AppleScript Language Guide - хорошо иллюстрированный учебник, который включает множество практических примеров (книга находится по адресу http://developer.apple.com/techpubs/macosx/Carbon/pdf/AppleScriptLanguageGuide.pdf , размер файла - 2,6 Мб). Второй источник - сайт http://www.scripter.com , - содержит массу материалов как по AppleScript, так и по другим, альтернативным языкам написания сценариев для платформы Макинтош.

Кроме того, если вы решитесь вплотную заняться написанием скриптов, то вам понадобится хорошая инструментальная среда - Script Editor, поставляемый вместе с Mac OS, годится разве что для простеньких скриптов размером в 20-30 строчек кода. В таком случае можно порекомендовать Scripter 2.5 от компании Main Event Software - редактор имеет режим отладки и хорошо продуманный механизм отображения словарей приложений. А если вы собираетесь создавать программы AppleScript, которые будут иметь собственный пользовательский интерфейс, то вам не помешает также обзавестись программой FaceSpan 3.5 от Digital Technology - это приложение сократит время создания экранных меню и дилоговых окон, и позволит избежать длительной и малоприятной возни с эскизами на миллиметровой бумаге.

Вместо заключения

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

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

  • AppleScript Apple, . AppleScript AppleScript. , - .

    AppleScript.

    0 . . . . . . . . . . . . . . . . . . . . . 6

    1 . . . . . . . . . 7

    2 . . . . . . 10

    3 (I) . . . . . . . . 13

    4 . . . . . . . . . . . . . . . . . . . . . 15

    5 . . . . . . . . . . . . . . . . . . . . . 17

    6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

    7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

    8 (II) . . . . . . . 30

    9 ? ! . . . . . . . . 32

    10 . . . . . . . . . . . . . . . . . . 34

    11 . . . . . . . . . . . . . . 40

    13 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

    14 . . . . . . . . . . . . . . . . . . . 53

    16 . . . . . . . . . . . . . . . . 59

    17 . . . . . . . . 60 . . . . . . . . 60

    AppleScript Apple, . , AppleScript:

    AppleScript, AppleScript. , -, .

    AppleScript , . - AppleScript (Adobe PhotoShop, QuarkXPress, Adobe InDesign). FileMaker Pro . , GraphicConverter, BBEdit, Microsoft Word AppleScript (). , AppleScript . , . . , AppleScript, AppleScript. , - AppleScript.

    . (. 15). - AppleScript . , .

    AppleScript, AppleScript:

    , ; AppleScript , .. , AppleScript; (Mac OS X),

    AppleScript; AppleScript ; AppleScript (Mac OS X).

    AppleScript . , Java, . AppleScript , 10- , - . .

    5 AppleScript , . - AppleScript Studio, (Developer Tools XCode).

    JavaScript , .

    () . , . , . , .

    . , : . - . , . : .

    AppleScript, . . Script Editor (. 2), .

    Copyright (c) 2003 by Bert Altenburg

    : Bert Altenburg, - .

    1. . , - . , AppleScript . AppleScript .

    2. , PC, . - , -. CPU Monitor (Utilities, Applications), - . (Distributed Computing DC), Folding@home, . DC-, - . DC- . -- , DC- . , . ? DC- - . (), - . , - , . DC-- : , . , DC- :

    www.aspenleaf.com/distributed/distrib-projects.html

    3. . , . () , - . - , . - , . - , :

    http://www.macinstruct.com/tutorials/crash/index.html

    AppleScript Mac OS . , - . , .

    , -. , (statement), . , .

    AppleScript , . , 1 .

    AppleScript , :

    say "This is a spoken sentence."

    Fred, Trinoids, Cellos, Zarvox , Victoria.

    say "This is a spoken sentence." using "Zarvox"

    : AppleScript . , . , Victoria Zarvox .

    AppleScript . - , - . : . AppleScript - , . AppleScript , . (scriptable). , AppleScript (Mac OS X), .

    Finder. , Finder . , . Finder , - , . -, Trash, Finder.

    8 , AppleScript .

    Adobe PhotoShop . PhotoShop . , Finder.

    AppleScript , .

    Tell, AppleScript (Mac OS X) , Finder. AppleScript (Mac OS X) , - end tell . AppleScript Finder Finder, . , :

    tell application "xyz"

    (tell block). xyz xyz. , AppleScript , - , . , . (, ("). : , AppleScript . . .)

    Finder . , Finder. Finder, Finder.

    tell application "Finder" empty the trash open the startup disk end tell

    Finder . Finder, - , . .

    Finder, AppleScript (Mac OS X) .

    9tell application "Finder" empty the trash open the startup disk end tellbeep

    Finder . beep AppleScript. , .

    Beep (AppleScript (Mac OS X)) .

    tell application "Finder" empty the trash beep open the startup disk end tell

    Finder beep, AppleScript (Mac OS X) . , . , -, Finder , beep, Finder .

    AppleScript (Mac OS X) . - , Finder, . ().

    tell application "Finder" empty the trash beep end tellopen the startup disk

    AppleScript (Mac OS X) , . () - , .

    tell application "Finder" empty the trashend tell open the startup disksay "I emptied the trash and opened the startup disk for you" using "Victoria"

    AppleScript (Mac OS X) , Finder. , .

    Script Editor , . Script Editor AppleScript, Applications. , . .

    Compile. , AppleScript , AppleScript . Yo Finder! Dump my garbage (Finder! !) Hey Finder! Clean out the bin (Finder,) Finder. (compilation) AppleScript (Mac OS X) : - . , . , - . Script Editor.

    AppleScript (Mac OS X) .

    say "Im learning AppleScript the easy way!" using "Zarvox"

    Run, . Script Editor, !

    Enter . Enter - Space () (). Return (Shift) -. Return .

    Compile . - Run, .

    Run, Command-R. : , -

    , (compiled script) (application).

    : , - AppleScript,

    Script Editor Run.

    : , AppleScript ,

    Script Editor . , - , (System Preferences). , . - , Script Editor, Open File.

    : Save, - (run-only). , - .

    tell application "Finder" empty the trash end tell

    Script Editor .

    Application , :

    Script Editor app application. , xyz. - (-), pqr. - , AppleScript . , AppleScript pqr , tell .

    Script Editor , - . , control . :

    1) Control Script Editor. (.), Tell Blocks. , Tell "Finder".

    2) Finder empty the trash , (), 1. . - .

    2 + 6 = ...... = 3 * 4

    2 + 6 = xy = 3 * 4

    AppleScript . (variables) , . - (identiers), . - AppleScript, set.

    set x to 25set y to 4321.234

    AppleScript , . : (- , (bugs)). , x. , pictureWidth .

    set pictureWidth to 8

    , (, -,). , AppleScript, - . , (8 ) .

    AppleScript - . , set, say, to, beep , - AppleScript. , pictureWidth, . -, .

    AppleScript , . , .

    set pictureWidth to 8set pictureHeight to 6 set pictureSurfaceArea to pictureWidth * pictureHeight

    , (operators), - .

    set cubeEdgeLength to 10.0set cubeVolume to cubeEdgeLength ^ 3

    Script Editor, . , . (Result) . , 10.0. , 1000.0. , cubeEdgeLength ^ 3 , .

    : . - . (integers) , - , (. 13)

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

Я не собираюсь открывать цикл статей на тему: «Applescript для чайников. Шаг за шагом» по одной простой причине – материала на эту тему в сети предостаточно. И чтобы не переписывать букварь на свой лад и не изобретать колесо, я только укажу несколько источников, которые мне показались наиболее подходящими. По нему и сам буду просвещаться.

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

tell application "Finder"

display dialog "Привет лунатикам!"

трудно не понять что и от какой программы требуется. Но, насчет ООП не совсем согласен. Если писать такие бесполезные вещи как beep или say "Who is the man?" , то да, можно и не знать что такое цикл и класс, да и до ООП с этим еще далеко. Но если хотите научиться писать программы или сценарии для облегчения ежедневных задач себе или какой-то базе данных, то лучше вам знать что такое «Наследование» и «Инкапсуляция».

С чего начать?

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

Кому книгу?

Если стандартного руководства недостаточно, или написано оно так, что вам не сразу все ясно, можна обратиться и к книгам (электронным или печатным – вам решать). Очень часто ссылаются на книгу «AppleScript Language Guide ». Оказывается, именно на нее есть ссылка в справке Редактора скриптов.

Нельзя не учесть и других ресурсов, которые предлагает нам сама компания-разработчик. Есть книга для новичков «AppleScript 1-2-3 » или можно купить с одноименным названием.

Больше лучше

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

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

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

Из статей я бы уделил внимание этой . Она мне понравилась подробным изложением некоторых основных принципов самого языка сценариев, «коротко и ясно».

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

Перед тем, как приступить к поиску и скачиванию материала, рекомендую все-таки определиться с целью. Для общего развития можно ознакомиться с некоторыми источниками. Для написания действительно полезных скриптов придется потратить несколько дней/недель/месяцев (зависит от ваших способностей и свободного времени). Это очень интересно и затягивает.

Я не могу сейчас оценить шансы человека устроится на работу applescript-программистом или тестером. Скорее всего не очень большие. Но если вы чувствуете, что это ваше - вперед. Если видите цель и не видите преград - не важно кому это нужно (как минимум – вам). Истинный талант оценят всегда. А у вас есть шанс делать любимую работу.