Листинг 11.23, Установка цветной метки на папку
applescriptContent = 'tell application "Finder"\rset label index of parent of file ' & f_src & ' to 6\rend tell'
app.doScript(applescriptContent, ScriptLanguage.applescriptLanguage)
Первая строка- не что иное, как скрипт на AppleScript (простите за тавтало-гию). В ней управление передается программе Finder (аналог Проводника на платформе Windows), после чего выполняется единственная операция - присваивается необходимый цвет папке, содержащей файл InDesign (6 - порядковый номер зеленого цвета из всего списка цветов для label).
Для запуска скриптов, написанных на других языках (в том числе и на Visual Basic), в InDesign предусмотрен метод doScripto, имеющий два параметра: первый - собственно текст скрипта либо ссылка на файл скрипта, второй - значение, указывающее на использованный в данном скрипте язык, в нашем случае это applescriptLanguage.
Теперь решим заачу несколько посложнее. Допустим, обрабатывается реклама, поступающая в несколько изданий (это ситуация, кстати, отражена в скриптинге). В случае утверждения макета заказчиком соответствующий макет распечатывается. Как Правило, для этого используется один и тот же принтер, в таком случае менеджерам по рекламе, разбросанным по разным комнатам, нужно знать, когда уже можно идти и забирать распечатки - иначе неминуемы постоянные звонки: "А такой-то и такой-то макеты уже распечатаны? А когда можно их будет забрать?" и т. п. Было решено написать скрипт, который бы после распечатки макета отсылал соответствующему ме неджеру уведомление о том, что макет распечатан. Поскольку автор работает на Мае, а скрипт использует межпрограммные соединения, код приведен на applescript (листинг 11.24).
\ Листинг 11.24. Отправление извещения о готовности распечатки
strl = 'tell application "Mail"\rset n to make new outgoing message\rtell n\rset subject to
subj = Название_рекламы уже распечатана на принтере Название_принтера' str2 = "'\rmake new to recipient with properties {address:'" app.doScript(strl+subj+str2+addr+'"}\rend tell\rsend n\rend tell', ScriptLanguage.applescriptLanguage)
Поскольку скрипт занимает несколько строчек, было решено разбить его на несколько читабельных фрагментов, которые потом собираются в одно целое.
Адрес при этом берется из поля Отправитель e-mail сообщения (они также обрабатываются applescript). Или, как вариант, можно создать список менеджеров с их электронными адресами и выводить его на экран перед отсылкой.
Обратите внимание на легкость чтения и понятность выполняемых операций - в этом заключена особая философия, которая свойственна вообще платформе Macintosh.
Удачи в освоении скриптинга!
ПРИЛОЖЕНИЯ
ПРИЛОЖЕНИЕ 1
Краткое сравнение синтаксиса AppleScript, JavaScript и VBScript
Данное приложение посвящено обзору наиболее общих сведений о структурах, используемых в программировании (более подробное изложение возможностей одного из языков- JavaScript- приведено в приложении 2). Здесь также приведено краткое сравнение, синтаксиса языков, которые понимает InDesign. Подобная организация позволит в кратчайшие сроки непрограммистам освоиться с новой для них средой, а программистам, практикующим какой-то один язык (как правило, это JavaScript), в сжатые сроки перейти на другой (как правило, на поддерживаемый Macintosh AppleScript).