Какъв трябва да бъде манипулаторът на applescript за съобщения. Скриптове за Mac OS X: започване на програмиране на AppleScript

15.05.2022

От тази статия ще научите какво е 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 с минимални усилия.

Прост скрипт

За редактиране и изпълнение на скриптове ще използваме стандартния редактор на скриптове. Можете да го намерите в папката /Application/AppleScript. Първо, нека напишем прост скрипт „HelloWorld“.

показване на предупреждение "Hello World!" # Показване на диалога
кажете "Здравей свят" # Извеждане в колони

Мисля, че тук няма нужда да обяснявам нищо, но бих искал да отбележа изключително лесния достъп до речевия синтезатор от AppleScript с помощта на командата say. Това е истинска комуникация с потребителя в стил Apple :). Разбира се, този диалог може лесно да бъде персонализиран. Например добавете необходимите бутони:

Панел с допълнителни бутони

показване на предупреждение "Hello World!" бутони ("Здравей", "Чао")
задайте отговор на бутона, върнат от резултата
ако отговорът е "Здравей", тогава
...
друго
...
край ако

Сега да напишем нещо по-полезно. Например, нека позволим на потребителя да избере файл и да прочете съдържанието му:

# Панел за избор на файл
задайте файл на (изберете файл с подкана "Изберете файл за четене:" от тип ("ТЕКСТ"))
отворете за достъп файла

Четене на съдържанието

задайте FileContents на (прочетете файла)
затворете достъпа до файла

Тези примери ясно показват основната идея на AppleScript - той е много близък до живия английски език. Следователно четенето на скриптове е лесно дори за човек, далеч от кодирането. Всяка глаголна команда може да бъде допълнена със съществителни модификатори и параметри.

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

AppleScript използва механизъм за съобщения, за да комуникира с други приложения:

кажете на приложението "Microsoft Word"
напуснете
край кажи

Чрез командата tell избираме приложението, на което ще изпратим съобщението. В този случай молим MS Word да излезе. В блока "кажи - край на кажи" могат да бъдат изпратени произволен брой команди. Съобщенията, изпратени до приложението, могат да бъдат по-конкретни. Всичко зависи от това какви команди са внедрили разработчиците. iTunes, например, експортира доста команди и свойства в средата на AppleScript:

Стартирайте желания плейлист в iTunes

кажете на приложението "iTunes"
възпроизвеждане на плейлиста с име „Моите любими“
край кажи

Можете да разберете набора от съобщения и типове данни, които едно приложение експортира в средата на AppleScript, като разгледате неговата терминология (файлът AppName.scriptRerminology в ресурсите на приложението). За да направите това, в редактора на скриптове отидете в менюто „Файл - Отваряне на речник - ...“ и изберете желаното приложение.

За да ви улесни работата с класовете и командите, които приложението експортира, те са организирани в секции. Всички приложения, които поддържат скриптове, имат поне два раздела: един стандартен и един по-специфичен за това приложениесекции. Стандартният раздел съдържа набор от стандартни команди, които всяко приложение на Mac поддържа: отваряне, печат, затваряне и излизане. Съдържанието на останалите секции зависи от въображението на разработчиците.

Изпълнение на AppleScript от вашето приложение

Ако пишете приложение в Objective-C/Cocoa, тогава е възможно някои неща да бъдат по-удобни за правене с помощта на AppleScript. За създаване и изпълнение на скриптове в приложения на Cocoa има клас NSAppleScript. Ето един прост пример за използването му - изпълнението на получаване на ред за състоянието на потребителя от приложението iChat.

NSAppleScript *iChatGetStatusScript = нула;
iChatGetStatusScript = [ initWithSource: @"кажете на приложението "iChat" да получи съобщение за състояние"];
NSString *statusString = [stringValue];

Възможно е същото нещо да може да се направи по друг начин, без да се използва скрипт, генериран по време на изпълнение, но е малко вероятно алтернативният код да изглежда по-опростен от този. Ако скриптовете са големи, можете да ги съхранявате в пакетни ресурси и да ги четете, когато е необходимо.

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

Много е полезно да добавите поддръжка за скриптове към вашите Cocoa приложения, защото ако вашето приложение има интерфейс към AppleScript, тогава потребителят, като напише няколко реда в AppleScript, ще може да го персонализира за своите нужди и да го интегрира с други приложения че той е инсталирал, а след това, например, автоматизирайте решаването на рутинни задачи. За да експортирате типове и команди в средата на AppleScript, трябва да ги опишете в специални файлове. Възможно е да направите това във файловете .scriptSuite и .scriptTerminology или в един файл с разширение .sdef. И в двата случая файловете са в XML формат, но със sdef се работи по-лесно.

Съдържанието на файла scriptTermonology се показва в редактора на скриптове, когато преглеждате речника на приложението. Този файл съдържа описание на обектите, експортирани в AppleScript.

Отваряйки файла scriptSuite в Plist Editor, можете да видите, че той съдържа следните основни раздели:

  • AppleEventCode – четирибуквен код, който идентифицира приложението за средата на AppleScript (кодът трябва да е уникален в рамките на една и съща система);
  • Име - името на секцията, която съдържа експортираните команди и класове.

Разглобете вътрешна организациятези файлове нямат много смисъл, тъй като най-вероятно ще трябва да се справяте само с sdef файлове.

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
















В sdef терминологията за скриптове е смесена с Подробно описаниекоманди и типове, които могат да бъдат намерени във файловете .scriptingSuit. Нека приложим това на практика, като създадем приложение Cocoa, което поддържа AppleScripting. За да направите това, в новия проект Cocoa добавете флаговете Scripting и OSAScriptingDefinition с името на нашия sdef файл към файла Info.plist:

...
NSApleScriptEnabled

OSAScriptingDefinition
Scrtipting.sdef

Нека добавим следния файл Scripting.sdef към проекта:












И така, от AppleScript имаме едно налично свойство - myprop. Всичко, което остава, е да напишем ObjC код, който ще обработва четенето на това свойство от скриптове. За да направим това, трябва да създадем категорията NSApplication, тъй като това е класът, който избрахме като получател на съобщения от скриптове.

#импортиране
@interface NSApplication (Скриптове) - (NSString *) myprop;
@край
@implementation NSApplication (Скриптове) - (NSString *) myprop
{
return @"Това е моя собственост";
}

Ако сега се обърнем към свойствата на нашето приложение от AppleScript, ще видим нашето свойство и неговата стойност сред тях:

кажете на приложението "Скриптове"
Имоти
край кажи

Заключение

Разбира се, тук е невъзможно да се опишат всички възможности на AppleScript и взаимодействието му с приложенията на Cocoa. Да, това не е необходимо - има ръководства за това. А ние, от своя страна, ще продължим поредицата от статии за кодиране за платформи на Apple и ще ви разкажем още много нови и интересни неща.

Все още не използвате AppleScript? Не знаете какво е? Мислиш ли, че това няма полза за теб? Или може би споменът за училищните уроци по информатика ви кара да имате алергичен пристъп само при споменаването на думата „програма“? Това означава, че сте постъпили правилно, като сте отворили тази статия.

Надявам се, че ще ви помогне много да разрешите това. полезен инструмент, а времето, прекарано в четене, ще се отплати щедро по-късно.

Често, когато работим с определена програма, трябва да извършваме едни и същи действия много пъти: да натискаме едни и същи клавиши, да избираме една и съща команда от менюто, да въвеждаме едни и същи стойности в диалогови прозорци& Тук идваме на помощ AppleScript пристига. Описваме последователността на нашите операции под формата на програма „скрипт“, стартираме я и спокойно пием кафе, като от време на време поглеждаме дали е приключила обработката на последния, три хиляди седемстотин осемдесет и деветия файл. Нещо подобно съществува под формата на DOS BAT файлове или UNIX shell скриптове. Но AppleScript има важно предимство: езикът се „разбира“ както от Finder, така и от голям брой приложни програмии скриптът има достъп до всички тях един по един.

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

казвамприложение "Finder"
направи
край кажи

Мисля, че всички разбраха какво ще направи. Но за да научите как да пишете свои собствени скриптове, ще трябва да разберете някои концепции.

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

AppleScript е обектно-ориентиран език. Тоест, всичко, което "съществува" във вашия компютър, той счита обекти(обекти). Един обект може да се състои от други обекти, да бъде включен в друг обект или да се отнася към друг обект. Например Finder е обект. Има "подчинени" обекти - папки, файлове, прозорци. Редакторът Tex-Edit има текстов обект, състоящ се от думи, редове, абзаци и т.н. Да знаете как са свързани обектите (тяхната йерархия) е много важно, тъй като командата се предава „по веригата“. Работи нещо като „вертикал на властта“: ние даваме нареждания на Finder, той дава нареждания на папката, той дава нареждания на папката, вложена в него, и така нататък, докато стигне до желания файл. И „докладът за изпълнение“ отново ще следва същата верига - в обратна посока.

Формират се обекти от един и същи тип (например всички папки). Клас(клас). Всеки обект има определен набор Имоти(свойства), които го отличават от друг. Например всеки файл има име, етикет, тип, дата на създаване, версия и повече от дузина характеристики. Сценарият може да промени някои от тях, някои могат само да бъдат прочетени.

Един клас (нар "потомък") може да наследи свойства на друг клас ( "прародител"). Например и папките, и файловете имат общ прародител - елемент (елемент).

Сега нека да разгледаме нашия пример, като го разширим малко:

- всеки текст, написан след "двата минуса",
— счита се за коментар;
- компютърът не му обръща внимание
казвамприложение "Finder"
- започва с думата разкажи отборна група,
- свързани с един обект
направинова папка на работния плот със свойства (име: "Мое!", индекс на етикета: 2)
край кажи - и така завършва групата от команди
казвамприложение "Finder" Да кажаелемент "Мое!"
отворен
комплектнеговото име да се"Само за мен"
край кажи

Първо казваме на Finder да създаде нов обект на папка, разположен на бюрото. Някои от свойствата са посочени в командата (име на папка и цветен етикет), останалите ще бъдат зададени от компютъра по подразбиране. След това казваме на Finder да заповяда на своята папка (по този и само по този начин: „васалът на моя васал не е мой васал“), за да отвори и промени името.

Но е време да преминем от теоретични разсъждения към нещо по-осезаемо. Време е да стартирате редактора на скриптове.

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

Създадени са няколко програми за работа с AppleScript, включително много напреднали инструменти за разработка. Вероятно по-късно ще притежавате един от тях. Но за първоначално запознаване редакторът, включен в Mac OS, ще ни бъде достатъчен.

Прозорецът на редактора на скриптове е разделен на две части: коментарът е написан в горната част (показва се на екрана преди изпълнението на скрипта), а програмата е в долната част. Нека се опитаме да напишем нашия пример (разбира се, можете да правите без моите коментари). След това щракнете върху бутона „Проверка на синтаксиса“. Ако сте направили някаква грешка, ще се появи обяснителен прозорец. Но най-вероятно всичко ще бъде наред - и след кратка пауза текстът ще промени донякъде външния си вид. Шрифтът, използван за подчертаване на различни елементи от скрипта, може да бъде конфигуриран с помощта на командата „AppleScript Formatting“ в менюто „Edit“. Сега можете да щракнете върху бутона „Изпълни“. Проработи?

Написаният скрипт може да бъде запазен по различни начини: или оригинален текст(Текст), или вече компилиран скрипт(Компилиран скрипт) - готов за изпълнение от редактор на скриптове или някои други програми, накрая - под формата на независим (бележка под линия: разбира се, не съвсем - няма да направи нищо без инсталиран AppleScript) аплет програма(Приложение). Можете да направите скрипт „само за изпълнение“ (само за изпълнение). Само не забравяйте в този случай да спестите - за себе си - и оригинален файл. В противен случай не само конкурентите, които искат да нарушат вашите авторски права, но и вие самите няма да можете да стигнете до неговия изходен текст.

Речници, речници, речници...

„Е, добре“, сигурно си мислите, „използването на редактора е лесно като белене на круши, четенето на готови скриптове също не е трудно. Но как да ги напишем? Откъде да вземем всички тези класове, команди, свойства?“ Отговорът е прост: трябва да погледнете речник. Всяка програма, която поддържа работа с AppleScript, както и ScriptingAddition (ще говорим за „допълнения“ по-късно) съдържа Кратко описаниевсички негови обекти и разпознати команди. Можете да видите този речник директно от редактора на скриптове - като изберете „Отвори речник“ от менюто „Файл“ или като плъзнете желаната програмакъм снимката на редактора.

Програмите на Macintosh могат да поддържат AppleScript на три различни нива.
Възможност за скриптове- програмата може да изпълнява команди, описани под формата на скрипт.
Записваем- има възможност за записване на команди, изпълнявани в програмата. Нека създадем нов скрипт, да започнем да записваме (използвайки бутона „Запис“) и да го изпълним, например, във Finder ръчно необходими действия, спрете записа (“Стоп”). Това е всичко. Това прави много удобно създаването на шаблони за скриптове.
Прикачен- скриптът може да се изпълнява директно от програмата, като се “прикачи” към меню или към произволен обект в прозореца. Примери за такива програми: AppleWorks, Tex-Edit, FileMaker Pro.

Да отворим например речника на Finder.

Вляво виждате списък с всички „термини“, дефинирани в програмата. Моля, обърнете внимание: някои от тях са в курсив. Това са обекти. Всички останали са отбори. Като щракнете върху желаната дума, можете да прочетете кратко резюме.

Какво например можете да разберете за „Контейнер“? Първо виждаме: „Контейнер за клас: Елемент, който съдържа други елементи.“ Тоест, това е елемент, съдържащ други елементи. И ако погледнете описанията на следващите няколко класа, ще стане ясно, че „контейнер“ е понятие, което включва дискове, папки, работен плот и кошче. Той има общите свойства на тези до голяма степен подобни обекти. И в „родословното дърво“ - йерархията на класовете - той е техният прародител.

Прочетете. „Форма за множествено число: контейнери“. Множествено число? Учим ли английска граматика? Да и не. Вече споменах, че AppleScript е възможно най-близо до естествения език. И ако искаме да обработим всички обекти от даден клас, тогава го запишете, както трябва да бъде в английски език, можете да „всеки контейнер“ или „контейнери“.

Както вече знаете, един обект може да съдържа други обекти. Кои и как се различават един от друг са описани в следващия раздел на речника - „Елементи“. Контейнерът, както можете да видите, може да съдържа обекти от една и половина дузина различни класове, например други контейнери, папки, документи и програмни файлове и т.н. И можете да посочите конкретен елемент от клас или по име (по име) или по сериен номер (по цифров индекс).

И накрая, последният раздел е „Свойства“. Тук първо виждаме, че класът „Контейнер“ е потомък на класа „Елемент“ ( елемент ), тоест има всички негови свойства. Но този клас също има няколко свои собствени. Моля, обърнете внимание: някои от тях са маркирани с „” (само за четене), тези свойства не могат да се променят с помощта на командата AppleScript.

Сега нека видим как командите са описани в речника. Например, нека вземем скрипта „Make“, който вече ви е познат от примери за скриптове. В горната част на страницата е целта на командата (create нов елемент). След това - как се пише (синтаксис) и какви параметри има. Имайте предвид, че някои параметри са оградени в квадратни скоби. Това е значението на речника по желаниенастроики. Когато съставяме скрипт, можем и без тях, но ако ги използваме, не е необходимо да поставяме никакви скоби. Завършва помощта за команда, като я посочва резултат(Резултат). В нашия пример това ще бъде „препратка“ към създадения обект.

Ето. Вече можете да опитате да напишете някакъв прост скрипт. Така…

О, създател!

Мисля, че знаете, че всеки файл на Macintosh има две характеристики - тип и код за създаване, които позволяват на Finder да реши как да обработва този файл. Също така не е тайна, че често - например след предаване по интернет - тези атрибути се губят. Разбира се, има много програми, които могат да ги променят. Но нека се опитаме да направим наша собствена помощна програма, като използваме само това, което вече е включено в Mac OS.

Нека започнем с най-простия вариант. Да предположим, че трябва да присвоим на файла letter.txt, който се намира на бюрото, типа „TEXT“ и кода на създателя „ttxt“ (SimpleText).

Изберете файловия обект в речника на Finder. Намираме свойствата, от които се нуждаем: тип файл и тип създател. За да промените стойността на определено свойство, използвайте командата “setraquo; (Инсталирай). Така че целият скрипт трябва да изглежда така:

казвамприложение "Finder" Да кажафайл "letter.txt"
комплектнеговия файлов тип да се"ТЕКСТ"
комплекттипът му създател да се"ttxt"
край кажи

Или така:

казвамприложение "Finder"
комплекттип файл нафайл "letter.txt" да се"ТЕКСТ"
комплекттип създател нафайл "letter.txt" да се"ttxt"
край кажи

По този начин, както можете да видите, можете или да кажете на файла да промени свойствата си (in в този примердумата „негова“ може да бъде пропусната, тъй като целта на командата е ясно дефинирана без нея), или програмата Finder може да промени свойствата на подчинения обект.

Не напразно поставих условието файла да е на работния плот. В противен случай се нуждаехме от по-дълга „верига“ от подчинени обекти (нещо като „кажете на приложението „Finder“ да каже на диска „Macintosh HD“ да каже на папката „leson“ да каже на файла „letter.txt““). Или - за втората версия на скрипта - индикация пълен път: „файл „Macintosh HD:lesson:letter.txt““ (Запомнете: пътят в Mac OS се записва с двоеточия).

Е, сценарият е написан. Той работи. Но честно казано, няма полза от това - в крайна сметка за всеки следващ файл трябва да промените текста на самия скрипт. Леле, улесни работата! Трябва да подобрим нашата програма. Нека го научим да пита потребителя кой файл да обработи. Отворете речника на Finder, вижте и ето ги! Нищо подходящо. Наистина ли Apple направи такава грешка? Въобще не…

„Нямате ли същата, но със седефени копчета?“

Open Script Architecture (OSA) ви позволява да придобиете почти всеки необходим елемент от езика. Разбира се, ако някой си направи труда да пише "добавка"(Scripting Addition или OSAX), който описва такъв обект и съответните команди. Тези допълнения се намират в папката Scripting Additions, намираща се в System Folder (преди това в Extensions). Всеки скрипт може да ги използва, независимо каква програма изпълнява в момента.

Нека отворим речника Standard Additions (за да стигнете бързо до папката Scripting Additions, има специален бутон в диалоговия прозорец Open Dictionary). Ето го - командата "избор на файл". Резултатът от работата му ще бъде връзка към файла, избран от лицето в стандартния диалогов прозорец Отваряне. Ще запазим тази връзка в променлива, която ще наречем например MyFile.

Нашият скрипт ще изглежда така:

казвамприложение "Finder"
комплект MyFile да сеИзберете файл
комплекттип файл на MyFile да се"ТЕКСТ"
комплекттип създател на MyFile да се"ttxt"
край кажи

Доста работеща програма. Но възможно ли е да го направим по-удобен? Защо да стартирате скрипта отделно, след което да изберете името на файла в диалоговия прозорец - не е ли по-добре да използвате метода Drag’n’Drop? Всичко е по силите ни!

Писане Капчица

И така, какво искаме да получим и как да го постигнем.

  1. Програмата трябва да работи независимо от редактора на скриптове. Всичко е ясно с това, вече знаем, че за това трябва да бъде запазено като аплет.
  2. Целта на скрипта е да промени свойствата на даден файл. Вече имаме готова тази част.
  3. Файлът, който е „начертан“ върху изображението на скрипта, трябва да бъде обработен. Тук започва забавлението. Постоянно се случват различни неща с обекти, „живеещи“ в нашия компютър. събития. Например файлът може да бъде преместен, копиран или отворен. Програмата ще започне, ще изпълни някои команди или ще направи нищо и накрая ще приключи. За да може един обект да „знае“ как да реагира на конкретно събитие, е необходима специална подпрограма - "манипулатор"(манипулатор). Когато файлове, папки или дискове са „хвърлени“ към аплета, Finder му изпраща командно съобщение „Отвори“ и списък с „хвърлени“ обекти. Именно за това събитие ще трябва да напишем манипулатор.

В най-простия случай ще изглежда така:

Наотворете FileList — думата “on” започва манипулатора на събитието
— първоначално скриптът работи самостоятелно, без да засяга никакви програми
комплект MyFile да сет.1 на FileList
казвамприложение "Finder" - сега командваме Finder
комплекттип файл на MyFile да се"ТЕКСТ"
комплекттип създател на MyFile да се"ttxt"
край кажи
крайотворен - не забравяйте да посочите, че манипулаторът е приключил

За временно съхраняване на списъка използвахме променливата FileList. Променливите могат да бъдат именувани с произволна комбинация от латински букви, но е препоръчително да ги именувате по такъв начин, че да можете да разберете от името какво означава тази променлива.

Както можете да видите, първият елемент от списъка, предаден при стартирането на скрипта, се обработва. Какво ще кажете за останалите? Нашата програма просто не им обръща внимание. Не е трудно да се досетите, че следващата стъпка по пътя към съвършенството ще бъде обработката на цял куп файлове наведнъж.

Веднъж, веднъж, още веднъж...

Досега всички команди на нашите скриптове се изпълняваха една по една в реда, в който бяха написани. Сега трябва да повторим същите действия няколко пъти подред. Ще трябва да организираме специална структура - цикъл. AppleScript има различни контролни команди за това. Можете да повтаряте действията предварително определен брой пъти или да ги изпълнявате, докато е изпълнено определено условие. Но почти всеки език за програмиране има такива цикли. В нашата задача друга опция е идеална - „повторете за всеки елемент от списъка“. С него скриптът ще изглежда така:

Наотворете FileList
повторете с MyFile в FileList - така се изписва началото на един цикъл
казвамприложение "Finder"
комплекттип файл на MyFile да се"ТЕКСТ"
комплекттип създател на MyFile да се"ttxt"
край кажи
край повторение - край управленска структуранепременно празнувайте
крайотворен

От какво още се нуждае нашата програма, за да стане напълно професионална? И не й стига "безупречен". В крайна сметка можете да „хвърляте“ папки и преки пътища върху изображението на скрипта, но трябва да работи само с обикновени файлове.

Който искаш, избирай

Следователно, когато преминавате през елементите на списъка, трябва да определите какво представлява всеки от тях. Само ако попаднете на обикновен файл, променете свойствата му. Друга контролна структура ви позволява да изберете дали да извършвате или не операции - условен операторАко. Можете да определите дали даден обект е папка или пряк път, като получите информация за него с помощта на командата „info for“ от Standard Additions. Резултатът ще бъде обект от класа „информация за файла“. Това са неговите свойства - "папка?" (папка) и „пряк път?“ (псевдоним) - ще проверим. Защото имаме нужда елементът да не е папка Ине беше пряк път, ще свържем две условия логическа операция„и“ (когато е достатъчно да се изпълни някое от условията - ИЛИпърво, ИЛИвторият - използвайте съединителя "или"). Като цяло в резултат на нашите разсъждения се получи следният скрипт:

Наотворете FileList
повторете с MyFile в FileList
комплект theInfo да сеинформация за MyFile
ако(папка на theInfo еневярно) и ¬
(псевдоним на theInfo еневярно) тогава
казвамприложение "Finder"
комплекттип файл на MyFile да се"ТЕКСТ"
комплекттип създател на MyFile да се"ttxt"
край кажи
край ако
край повторение
крайотворен

Моля, обърнете внимание, че всички условия в оператора If трябва да бъдат написани в един ред. За да направите текста на програмата по-четлив, може да бъде полезно да „сгънете“ дълъг ред, както е направено в този пример. За да направите това, натиснете клавишната комбинация "Option-Return". В текста ще се появи символът за продължение „¬“.

Разбира се, в този кратък урок успях само да ви запозная малко с най-простите техники за работа с AppleScript. Но мисля, че сте убедени, че в това няма нищо сложно. Опитай! Надявам се да продължа тази тема в бъдещи статии.

AppleScript е мощен език за програмиране, който датира от Mac OS 7. Въпреки това, въпреки своята зрялост, опитни Mac програмисти често критикуват AppleScript, че е твърде прост, твърде лесен за научаване и твърде подобен на обикновения английски.

Разбира се, бихте искали компютърен език да има точно тези качества - ако, разбира се, изобщо искате компютърен език. AppleScript е най-простият езикпрограмиране, с което можете да автоматизирате вашия Mac, дори ако сте обикновен потребител, а не сертифициран компютърен учен.

AppleScript програмите (наречени скриптове или скриптове) могат да се считат за софтуерни роботи. Един прост AppleScript може да изпълнява някои ежедневни задачи като създаване резервно копиеПапки с документи. По-сложен скрипт може да обхваща няколко страници. В професионалните издателства, където AppleScripts са най-популярни, скриптът може да се свърже през интернет с твърдия диск на фотографа, да извлече снимката от определена папка, да извърши корекция на цвета във Photoshop, да постави резултата в определен документ с оформление, да отпечата груб оформление, изпращане на имейл известие до редактора - и всичко това става автоматично.

Без дори да го знае, потребителят непрекъснато използва основната AppleScript технология. Много компоненти на Mac комуникират зад кулисите с помощта на Apple Events, които са съобщения, които предават инструкции или данни от програма на програма. Ако използвате командата Show Original на псевдоним или командата Get Info на файл или папка, Apple Event ще каже на Finder как да реагира.

AppleScript превъзхожда Automator по редица начини, не на последно място от които е неговата мощност. И още нещо: AppleScript е толкова дълбока тема, че трябва да й бъде посветена отделна книга. Тази глава е просто вкусно предястие: книга като AppleScript: The Essential Guide би била ястие със седем ястия.

съветМожете да изтеглите цяла глава за AppleScript—която се появи в предишно издание на тази книга—от страницата Missing CD на www.missingmanuals.com.

Не е необходимо да създавате AppleScript, за да се насладите на предимствата на тази технология. Mac OS X идва с десетки готови скриптове, които са наистина полезни и за да изпълните някой от тях, просто изберете името му в менюто. Това „възпроизвеждане“ на AppleScript изисква толкова технически умения, колкото натискането на бутон в асансьор.

Можете да изпробвате някои от тези страхотни начални сценарии, като добавите меню със сценарии към лентата с менюта (Фигура 7.16, вдясно).

Сценарийното меню има 16 готови категории, обединяващи около 100 сценария; за да стартирате скрипт, просто изберете името му. Ето списък с най-полезните и интересни сценарии.

съветАко натиснете клавиша Shift, докато избирате име на скрипт от менюто, Mac OS X ще ви отведе директно до мястото, където се намира този скрипт във Finder (например папката Home>Library>Scripts). Освен това, ако натиснете клавиша Option, докато избирате име, скриптът ще се отвори в редактора на скриптове, където можете да го прегледате или редактирате.

Това подменю съдържа само скрипта за импортиране на адреси, който е предназначен да копира имена и адреси от Entourage, Outlook Express, Palm Desktop, Eudora, Claris Emailer или Netscape в програмата Address Book. Ако имате много приятели, използвайте този скрипт, за да не се налага да въвеждате отново всичките им имена, телефонни номера и пощенски адреси. (Придружаващата подпапка Address Importers предлага скриптове за импортиране от три конкретни програми.)

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

Тази папка съдържа група скриптове за капчици ColorSync (които се изпълняват, когато плъзнете нещо върху иконата му), които представляват интерес за художници, дизайнери на уебсайтове, издатели и други подобни.

В някои случаи, когато изберете скрипт от това меню, ще видите кратко Съобщениеи след това диалоговия прозорец Отваряне, за да изберете графичния файл за обработка.

Други действат незабавно; например скриптът за компютърен монитор Mimic настройва цветовете на екрана, така че да съответстват точно на малко по-различните нюанси на компютърен монитор с Windows. Това е много удобно, ако работите върху

КУРСОВЕ ЗА ОПИТНИ ПОТРЕБИТЕЛИ
Тайните на скриптовото меню
Менюто на скрипта показва съдържанието на две различни папкиСкриптове: Единият е Home>Library>Scripts, а другият е в главната папка Library. Тези скриптове, които са взети от вашата лична папка, са разделени с пунктирана линия в менюто на скрипта.

Тези скриптове могат не само да се изпълняват. Те също са идеални за отварянето им в редактора на скриптове (просто щракнете двукратно) и анализирайте ред по ред как работят. След като разберете синтаксиса, можете да копирате кодови фрагменти и след като ги промените, да ги използвате във вашите скриптове. (Редакторът на скриптове е програма, намираща се в папката Applications > AppleScript, която можете да използвате, за да създавате свои собствени скриптове.)

Снимка или уеб страница и искате да знаете как ще изглежда на непросветените маси. (За да възстановите оригиналните цветове, отидете в раздела Цвят на дистанционното управление на дисплея в прозореца Системни предпочитания.)

Всички тези сценарии са свързани с работа във Finder - да речем, манипулиране на файлове и прозорци. Ето най-полезните:

Добавяне към имена на файлове, Добавяне към имена на папки. Тези скриптове добавят префикс или суфикс към името на всеки файл или папка в предния (активен) прозорец на Finder (или, ако няма отворени прозорци, на работния плот). Използвайки тези скриптове, можете да добавите думата "чернова", "окончателна" или "стара" към имената на всички файлове в папка.

Замяната на текст в имената на елементи ви позволява да извършите търсене за заместване в имената на файлове, папки или и двете. Ако един издател отхвърли вашето предложение за книга от 45 глави, можете да използвате този скрипт, за да преименувате всичките 45 глави: да кажем, че това, което беше „История на подложките за мишка – предложение за Random House, глава 1“, стане „История на подложките за мишка – предложение за Саймън "& Шустър, глава 1."

Изрязване на имена на файлове, изрязване на имена на папки. Ако сте направили грешка, когато сте изпълнили скрипта Добавяне към имена на файлове, винаги можете да я поправите с помощта на Изрязване на имена на файлове. Този скрипт премахва файлови разширения, суфикси или префикси по избор на потребителя.

Да приемем, че току-що сте създали няколко нови папки наведнъж. Mac OS X назовава тези папки „папка без заглавие“, „папка без заглавие 2“ и т.н. Но какво ще стане, ако ви е по-удобно с имената „папка 1“, „папка 2“ и т.н.? Стартирайте скрипта Trim Folder Names; В диалоговия прозорец въведете untitled и щракнете върху OK.

Малко вероятно е да използвате активно скриптове за действия с папки, тъй като точно същият достъп до операции с папки се осигурява чрез щракване с Control върху папка (или в нейния прозорец)

Тези скриптове демонстрират как можете да автоматизирате някои задачи, свързани с шрифтове.

FontSync е благородният опит на Apple за разрешаване стар проблемнастолно издателство. Завършихте създаването на красив бюлетин и го занасяте в местната печатница, за да го отпечатат на висококачествено оборудване, само за да откриете, че трябва да изхвърлите разпечатките и да започнете отначало - само за да разберете, че шрифтовете не не изглежда така, както искаше. Печатницата не разполагаше с точно същите шрифтове, които сте използвали за подготовката на документа. Или, още по-лошо, шрифтовете са имали абсолютно еднакви имена, но са създадени от друга компания и следователно са се различавали леко от вашите по определени параметри.

Идеята зад FontSync е да уведоми потребителя предварително за възможни несъответствия. Скриптът Create FontSync Profile създава профилен файл на FontSync за няколко минути. Този документ съдържа зашеметяващо количество информация за дизайна, потока и процъфтяването на всички шрифтове, инсталирани в системата. В печатница такъв документ може да бъде обработен с помощта на допълнителния скрипт Match FontSync Profile. Той щателно ще идентифицира разликите между шрифтовете на Mac на потребителя и печатните преси.

Разбира се, тази технология имплицитно предполага твърде много: че печатницата има инсталирани Macintosh компютри, че те могат да работят с FontSync, както и че потребителят няма да забрави първо да създаде и прехвърли FontSync профил в печатницата.

IChat претърпя значителна промяна в 10.5 - Apple добави много интересни (макар и понякога безполезни) функции. Също така стана възможно да стартирате AppleScript като сигнали, когато възникне събитие, свързано с вашите контакти. Например, можете автоматично да приемате покани за чат от отделни контакти или дори да им отговаряте с предварително подготвен поздрав. Можете дори да контролирате възпроизвеждането на музика на един Mac, като въвеждате команди в прозореца на iChat на друг Mac във вашия дом. Подробности в глава 21.

Ползата от тези два сценария е малка. Current Date & Time показва текущата дата и час в диалогов прозорец, оборудван с бутон за клипборд за копиране на информация, готова за поставяне. Font Sampler показва страница със списък на шрифтовете (чиито имена са написани в скрипта), които са инсталирани с Mac OS X. (Скриптът стана по-малко полезен, след като Font Book добави подобни вградени команди за печат.)

Два сценария в това меню заслужават специално внимание. Текущата температура по пощенски код показва каква е температурата извън прозореца във Фаренхайт и Целзий. Това е още една причина да не излизате от вкъщи цял ден.

Stock Quote получава борсови котировки за избраната компания с 20 минути закъснение. Не е толкова страхотно, колкото получаването на котировки в реално време, но е безплатно.

Повечето от скриптовете в това подменю решават някои специфични проблеми, като например броене на букви във вашите имейли. пощенски кутииили настройване на нов сметка. Най-смешният от всички, разбира се, е сценарият Crazy Message Text (фиг. 7.17).

Скриптовете в тази папка ви позволяват да прескачате в специални папки на Finder - направо от менюто, от всяка програма. Ако папката, която искате да отворите, няма зададен собствен скрипт, изберете я от списъка в скрипта за отваряне на специална папка.

съветЗа тези, които нямат нищо против да редактират този скрипт с помощта на редактора на скриптове, можете да го промените, за да ви позволи да избирате и отваряте повече от една папка наведнъж (чрез, да речем, -щракване). Просто трябва да напишете текста multiple selections allowed true веднага след думите Choose folder to open: (в края на реда, разположен приблизително в началото на втората третина на скрипта). Не забравяйте да запазите промените си.

Тези скриптове са предназначени да демонстрират силата на AppleScript за отпечатване и създаване на PostScript и PDF документи.

Един от тях, Print Window, запълва дългогодишна празнина в Mac OS X. Той трябва да отпечата текстов списък със съдържанието на всяка избрана папка. (Въпреки това е малко бъги.)

Според екипа „Относно тези скриптове“, тези 48 предварително изградени скрипта ви помагат да пишете по-бързи и по-точни скриптове, тъй като кодовите фрагменти са без правописни грешки и синтактични грешки. Когато станете по-добри, можете да добавите свои собствени скриптове тук, с фрагменти от код, съобразени със скриптовете, които обикновено пишете, за да направите работата си още по-ефективна. (Когато създавате скрипт в редактора на скриптове, вмъквате тези кодови фрагменти в текста, като използвате Control-щракване и избор от менюто бърз достъп.)

В по-голямата си част скриптовете си вършат работата тихо и незабелязано. Но ако искате да автоматизирате програма, която не разбира нормалните команди на AppleScript, скриптовете могат да я „контролират“ ръчно, като симулират избор на меню, натискане на бутони и т.н.

ЗабележкаТази функция, наречена скриптове на потребителския интерфейс (UI), ще влезе в сила само след като отворите конзолата за универсален достъп в Системни предпочитания и поставите отметка в квадратчето Разреши достъп за помощни устройства).

Няма смисъл да изпълнявате скриптовете от подменюто Скриптове на елементи на потребителския интерфейс така, както са: те са само примери за демонстриране на правилния синтаксис.

Този най-нов набор от скриптове осигурява бърз достъп до някои популярни уебсайтове. Изключение прави скриптът Download Weather Map, който изтегля текущата карта на времето на континенталните Съединени щати, записва я на работния плот като weathermap.jpg и след това я отваря в Preview.

съветМожете да добавяте скриптове, файлове и дори интернет адреси към менюто и след това лесно да ги стартирате от лентата с менюта. Всичко, което плъзнете в папката Library>Scripts, ще се появи автоматично в менюто за скриптове.

От друга страна, ако започнете да добавяте много свои собствени елементи към менюто Script, ще бъде по-удобно да премахнете пробите на Apple от него. Няма проблем. Отворете AppleScript Utility и премахнете отметката от Show Computer scripts.

Работи с готови скриптове AppleScript

Докато работите в менюто със скриптове, скоро ще разберете, че имате десетки безплатни вградени скриптове на вашия Mac. Страхотното е, че можете да разберете как работят и дори да ги промените, докато постепенно се научавате да пишете свои собствени AppleScripts. Можете дори да копирате и използвате цели раздели от скриптове на Apple във вашите собствени скриптове.

Първо, разбира се, трябва да отворите скрипта. Най-лесният начин да направите това е да отворите менюто със скриптове, да изберете желаната категория и да натиснете Option върху името на желания скрипт.

Можете да започнете да изучавате AppleScript, като гледате прост скрипт. Например, отворете скрипта за нов прозорец на приложение (в категорията Навигационни скриптове), като щракнете върху името му с бутон Option. В резултат на това редакторът на скриптове ще отвори файла в нов прозорец (фиг. 7.18).

Ето как работи този скрипт:

Кажете на приложението "Finder" казва на Mac OS X коя програма трябва да изпълнява следните команди.

Активирането извежда Finder на преден план - точно както ако сте щракнали върху иконата му в Dock.

Отворете папката „Приложения“ на стартовия диск казва на Finder да отвори нов прозорец, показващ папката с приложения на основния твърд диск.

End tell казва на Finder да си върши работата и да игнорира всички допълнителни команди от вашия скрипт.

За да тествате скрипта, щракнете върху бутона Run или натиснете -R.

съветМожете да редактирате този скрипт, за да отговаря по-добре на вашите нужди. Опитайте например да замените „Приложения“ с „Потребители“, така че скриптът да отваря папката „Потребители“.

Създаване на ваши собствени AppleScripts

Mac OS X идва с десетки програми - толкова много от тях! Добре де, нещо липсва - например метроном. Как ще свирите на пиано в постоянен ритъм, без да чувате ритмичните щракания, които издава вашия Mac? Разбира се, в краен случай метрономът на GarageBand ще помогне, но това е стрелба по врабчета от оръдие.

Вместо това можете да използвате AppleScript. Отворете нов документ в редактора на скриптове (Файл>Нов или -N) и въведете следното:

диалогов прозорец за показване "Добре дошли в AppleScript Metronome"

задайте bpm на текста, върнат от (диалогов прозорец за показване ¬

„Колко удара в минута?“ отговор по подразбиране 60)

задайте pauseBetweenBeeps на (60/bpm)

забавяне на паузата между звуковите сигнали

ЗабележкаНяма нужда да отпечатвате символа ¬. Така програмистите казват: „Това трябва да е на един ред, но няма достатъчно ширина на страницата.“

Когато стартирате този скрипт, се появява диалогов прозорец, който ви пита колко удара в минута искате да брои метрономът. Числото, което въвеждате (например 120), се съхранява във временна променлива за съхранение в рамките на скрипта, наречена bpm.

След това скриптът изчислява размера на паузата между звуковите сигнали и записва тази част от секундата в променливата pauseBetweenBeeps. Ако кажете на скрипта да бипка, да речем, 120 пъти в минута, тогава pauseBetweenBeeps ще бъде записано на 0,5, защото трябва да има пауза от половин секунда между бипканията.

Накрая скриптът създава безкраен цикъл: сигнал, пауза за определена дължина и след това повторение.

Щракнете върху бутона Run, за да тествате вашия скрипт, и когато чуете достатъчно звуци, щракнете върху бутона Stop.

ЛЮБИМИТЕ МИ ТЕХНИКИ
Прикачени файлове към работния плот с едно щракване
Ето един малък трик с Automator, който може да бъде спасител за всеки, който често трябва да изпраща документи чрез имейл. (Той моделира много удобната команда Send To, намираща се в менюто за бърз достъп на машини с Windows.)

Създайте процес в Automator само с две стъпки: Вземете избрани елементи от Finder (в категорията Finder) и Ново имейл съобщение (в категорията Mail).

Ако винаги изпращате файлове до един и същ получател - вашият шеф, например - можете дори да зададете предварително адреса в панела за процеси на Automator. Ако темата и текстът на съобщението се повтарят всеки път, можете също да ги зададете предварително.

Сега изберете File>Save As Plug-in. Наименувайте процеса по имейл или както искате.

Отсега нататък можете да изпратите документ от Finder, като щракнете върху него с Control и изберете Automator>Email This от появилото се меню.

Победа! Mac OS X стартира Mail и създава изходящо съобщение с прикачен файл.

Безплатен съвет: ако вмъкнете друго действие Създаване на архив (от категорията Finder) между тези две действия, вашата команда от менюто също ще компресира файла (или папката) в .zip файл, преди да го изпрати по пощата!

съветЩе бъде още по-готино, ако го сложите системни настройкиСистемни предпочитания>Универсален достъп>Слух>Премигване на екрана, когато се появи предупредителен звук. Сега, когато вашият скрипт се изпълнява, екранът ще мига заедно със звука. Ако записвате музика, заглушете вашия Mac: ще имате визуален метроном, но няма аудио сигнал.

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

Има стотици употреби на AppleScript - автоматизиране на процеси, които са твърде сложни за Automator, контролиране на програми, които Automator не може да види, и програмиране на неща като команден цикъл, който Automator не може да направи.

Ако гледате на AppleScript само като на заместител на Automator, вие пропускате много мощност. Всъщност AppleScript предоставя възможности, които Automator вероятно няма да има след 10 години: това е много по-усъвършенстван инструмент.

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

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

Отворете, изрежете, конвертирайте в друг цветен модел, запазете. Отворете, изрежете, конвертирайте в друг цветен модел, запазете. Отворете Или иначе: Изберете, прехвърлете в буфера, превключете към друго приложение, копирайте от буфера. Изберете, прехвърлете в буфер, превключете

Не звучи като творческа дейност, нали? Но почти всеки, който се занимава с компютър, трябва да извършва десетки и стотици повтарящи се, по същество идентични операции на ден. И след като работих три седмици като един вид „интелигентен конвертор“, това вече не е като преподаване нова версия„Photoshop“ или овладейте InDesign – дори не искате да се доближавате до компютъра. С една дума - имате нужда от помощник. Което ще поеме върху себе си изпълнението на всички (или поне повечето) скучни и рутинни, но, разбира се, необходими повтарящи се действия.

AppleScript - какъв звяр е?

И ние имаме такъв помощник. Това е специален език за писане на скриптове (или, ако предпочитате, скриптове), наречен AppleScript. Този език се появи за първи път в Mac OS 7.5 (тогава все още беше Macintosh System) и беше толкова добре внедрен и имаше толкова широки възможности, че до пускането на десетата версия на OS достигна само версия 1.8. Но колкото и да е странно, въпреки огромните си потенциални възможности и повече от десетгодишна история на съществуване, технологията AppleScript не е широко разпространена сред потребителите на Mac. Дали това се дължи на митове за неговата сложност, на инерцията на потребителите, които са свикнали изключително с управлението на „икона-мишка“ на своите Mac компютри, или на нещо друго, не мога да преценя, но фактът е факт: стотици знаят за съществуването на AppleScript, но използвайте само негови единици. Ето защо, по мое мнение, не би било излишно да разгледаме основните принципи на работа на тази технология.
AppleScript е базиран на Macintosh Apple Events, услуга за обработка на системни събития, която позволява обмен на контролни команди, данни и заявки между приложения. операционна система, мрежови услуги и дори различни компютри. Механизмът на скрипта (който е обикновено разширение, разположено в системната папка) преобразува командите на скрипта в поредица от събития и ги предава на приложението, посочено в скрипта, и след като ги обработи, приема резултата и го препраща към източника на скрипта .
Въпреки че AppleScript е истински език за програмиране (поддържа променливи, цикли, условни изрази, подпрограми, позволява сложни изчисления и дори има инструменти за изграждане и обработка на диалогови прозорци), изпълнението на основните задачи все още пада върху плещите на външни приложения. И AppleScript действа като вид „лепило“, което прехвърля данни между програми („прехвърляне на файл от Illustrator към Photoshop“), оценява текущото състояние на работната среда индивидуални програми, операционна система и мрежа („завършено ли е растеризирането на файла или още не?“) и ви позволява да предприемате действия въз основа на резултатите от предишни операции („ако всички файлове са растеризирани, изпратете материалите на специален папка и стартирайте скрипта, отговорен за сглобяването на ивиците на вестниците").
Има няколко нива на "скриптиране" на приложенията. Така например тези програми, които са най-малко адаптирани към автоматизацията, разбират само основните, най-прости команди: зареждане на приложение, отваряне на документ, изпращане за печат и затваряне на приложението (изпълни, отвори, отпечатай и излез). По-„сговорчивите“ (като Photoshop, Illustrator и FreeHand) имат в арсенала си инструменти, които са напълно достатъчни за писане на програми пакетна обработкафайлове и извършване на определени последователности от действия (макро команди). Е, тези, които прилагат поддръжка за почти всички възможности на технологията AppleScript (и това включва QuarkXPress, Adobe InDesign и повечето програми Ябълка) ви позволяват да контролирате работата си на най-„дълбоките“ нива: задавайте параметри за печат, използвайте клипборда, проверявайте и променяйте стойностите на вътрешните променливи и др.

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

За да въведете изходен текст и да изпълните скриптове, можете да използвате програмата Script Editor - основният и единствен инструмент за създаване на скриптове в стандартния пакет на Mac OS.
Редакторът на скриптове се намира в папката Apple Extras/AppleScript (за локализираната версия на Mac OS - Add-ons/AppleScript) и след стартиране показва прозорец, подобен на показания на фиг. 1.


Ориз. 1. Редактор на скриптове

Горното и долното поле за въвеждане са предназначени да опишат съответно скрипта и неговия текст и едва ли ще имат нужда от допълнителни коментари. Бутонът Запис ви позволява да запишете макро команда, след като натиснете бутона, отидете на необходими приложенияи извършете поредица от действия; след което текстът на скрипта ще се появи в долното поле за въвеждане (трябва да се отбележи, че възможността за запис на макро команди не се поддържа от всяка програма). Бутонът Проверка на синтаксиса проверява дали има грешки в текста на скрипта и също така го привежда в „продаваема“ форма - той е подчертан с удебелен шрифт и отстъп. ключови думии вложени блокове.
Сценарий първи. Като начало, както се очакваше, нека пишем най-простата програма, който изпълнява няколко основни действия: затваря всички отворени прозорци, премахва всички сменяеми дискове от носителя, организира иконите на екрана, почиства кошчето и изключва компютъра. Текстът на такава програма изглежда така:

кажете на приложението "Finder"

Затворете всеки прозорец
извадете всеки диск
почистете работния плот
празен боклук
изключвам

Край на разказа

Какво означава всичко това? Услугата Apple Events („ядрото“ на технологията AppleScript) прехвърля данни, заявки и съобщения не само между програми, но и между програмни елементи, наречени обекти, които могат да имат вложена структура, наречена обектен модел. Така например за програмата Finder обектният модел (по-точно само един от клоновете на този модел) може да бъде представен в следната форма: Finder - Desktop - Folder - File; За текстов редактортози модел ще приеме формата Документ - Страница - Абзац - Изречение; за векторна илюстрация ще изглежда като Илюстрация - Основна форма - Крива на Безие - Точка (фиг. 2).


Ориз. 2. Примери за обектни модели

Всеки обект обикновено има едно или повече свойства (Фигура 3), които могат да бъдат задавани („задаване на височина на страницата на 14 инча“), модифицирани („промяна на ширината от 8 на 8,5 инча“) и контролирани („какво е равно на дясната поле на страницата?").


Ориз. 3. Свойства на обекта

За да се управлява конкретен обект, той трябва да бъде избран (посочен) на обектния модел. За тази цел се използва дизайнът кажи край кажии всички команди, които контролират обекта, се съдържат в тази конструкция; ако обектът се намира „в дълбините“ на един от клоновете на модела, тогава се използват няколко блока, вложени един в друг кажи край кажи. В следващия пример скриптът постепенно осъществява достъп до работния плот (един от елементите на обектния модел Finder) и след това премества папката „test“, която е на работния плот, в кошчето.

кажете на приложението "Finder"
кажи десктоп

Изтриване на папка "test"

Край на разказа
край кажи

Когато пишете скрипт, който контролира всяка програма - няма значение дали е Finder, FileMaker, Adobe Acrobatили нещо друго, трябва да знаете какви команди на езика AppleScript поддържа тази програма, какви обекти са включени в нейния обектен модел, както и имената и целите на всички свойства на наличните обекти. Цялата тази информация се съхранява директно в изпълнимия файл на определена програма, в така наречения речник на приложението. За да използвате този речник, в програмата Script Editor трябва да изпълните командата File / Open Dictionary (Файл / Open Dictionary) и в прозореца, който се показва, изберете изпълним файлприлагане на лихвата. В резултат на това на екрана ще се покаже прозорец, подобен на показания на фиг. 4 - от дясната страна има списък с всички команди и обекти, от лявата страна има техните кратки описания.


Ориз. 4. Приложение за речник

Втори сценарий.Нека да преминем към решаване на практически задачи. Тези, които се занимават с уеб дизайн, често трябва да проверяват страниците си за съвместимост с по-стари версии на браузъри. За да направите това, трябва да отворите прозорци с папки, да потърсите там изпълними файлове на програми за преглед, да ги изтеглите и след това да потърсите папки с уеб страници на дисковете. Като цяло не е най-приятното преживяване. Нека създадем скрипт, който ще опрости разглеждането на страници: той автоматично ще зареди няколко различни браузъри, като във всяка ще отвори необходимия ни документ.

кажете на приложението "Finder"

Изберете (посочете) необходимия файл
изберете файл "index.html" от папка "Current web-site" на работния плот
-- задайте на променливата myFile пътя до избрания файл
задайте myFile на селекцията като низ

Заредете Microsoft IE и отворете избраната страница
кажете на приложението "Internet Explorer 3.01"
отворено (псевдоним myFile)
край кажи

Извършваме същата операция с Netscape Navigator
кажете на приложението "Netscape Navigator 3.01"
отворено (псевдоним myFile)
край кажи

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

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

Оператор комплектслужи за указване на стойностите на променливите, които се създават при първия им достъп. Тоест, няма нужда първо да описвате името и типа на променливата: вие сте написали, например, задайте myDate на текущата датаи AppleScript създаде променливата и избра необходимия размер и тип. Но това не е всичко: използване на оператора комплектможете да промените всички свойства на обектите. Това се прави по следния начин:

кажете на приложението "Finder"
кажи десктоп
кажи файл "Ценова листа"

-- промяна на свойството за коментар на файла "Ценова листа".
-- файлът е на работния плот
задайте коментар на "Тази ценова листа е остаряла!"

Край на разказа
край кажи
край кажи

Или същото нещо, само с помощта изберете команди:

кажете на приложението "Finder"

Изберете файл "Ценова листа" на работния плот
задайте коментар за избор на "Тази ценова листа е остаряла!"

Край на разказа

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


Ориз. 5. Запазване на скрипта като изпълнима програма

Сценарий трети и последен.Със сигурност за ползите Резервно копиемного са чували. И тези, които поне веднъж в живота си са загубили резултатите от месечната си (в най-лошия случай - поне седмица) работа, със сигурност знаят, че е по-добре да отделят 15 минути всеки ден за архивиране необходими файловеотколкото след това да си късаш косата и да хвърляш пепел върху монитора си. Но, като правило, дори и след загуба важна информацияхората не променят навиците си: може да си кажете: „Това е, от днес правя копия на всички файлове!“ И ще мине една-две седмици - и програмите изглеждат "не бъг" и няма свободно време - "И защо имам нужда от това архивиране! И това ще стане." За да направим живота малко по-лесен за всички онези, които искат да виждат файловете си здрави и здрави, но не обичат да работят с програмата StuffIt, ние ще напишем скрипт, който ще архивира всички необходими данни всеки ден и ще ги поставя на специален диск. Ето изходния текст на такава програма:

кажете на приложението "Finder"

Посочете устройството и папката, в която се съхраняват всички файлове
-- за архивиране
задайте myArhiveFolder на "Mac OS: Текуща работа:"
-- посочете папката, в която се съхраняват архивите
задайте myTargetFolder на "За архиви: Публикуване на архив:"
-- задайте име на бъдещия архив
-- (действа като име Текущата дата)
задайте myFile на низа от дата на (текущата дата) & ".sit"
-- създайте пълното име на файла (път + име)
задайте myArhiveFile на myTargetFolder & myFile

Ако вече съществува файл със същото име
-- (т.е. архивирането е извършено днес)
-- тогава просто завършваме сценария
ако не (съществува (файл myArhiveFile)), тогава

Ако файл с даденото име все още не съществува,
-- след това изтеглете StaffIt Deluxe и извършете архивиране,
-- и веднага разтоварете StuffIt от паметта
кажете на приложението "StuffIt Deluxe"

Активирате
направете нов архив със свойства (pathname: myArhiveFile)
неща (псевдоним myArhiveFolder) в архив 1
затваряне на архива 1
напуснете

Горният скрипт опростява процедурата за архивиране, но не толкова, колкото бихме искали - за да започнете архивирането, ще трябва да потърсите този скрипт (на дискове или на работния плот) и да го изпълните. За да автоматизирате напълно работата, трябва да компилирате скрипта и да го запишете в папката System/Shutdown Items. Сега, всеки път, когато изключите компютъра, архиваторът автоматично ще зареди и запише всички важни файлове на специален диск. Трябва да се отбележи, че архивирането ще се извършва само веднъж на ден, независимо дали компютърът е работил 20 часа подред или се рестартира на всеки половин час - с помощта на оператора за условие ако край акоПроверяваме дали си струва да архивираме, или е по-добре да изчакаме. До следващия ден.

И така, какво следва?..

След като прочетете за възможностите на AppleScript и видите колко лесно е създаването на скриптове, дори за начинаещи, може да искате да продължите да изследвате този инструмент за автоматизация. И тук ви очаква първото разочарование. За съжаление, практически няма информация за AppleScript на руски език: за да се преброят всички публикации, пръстите на едната ръка са повече от достатъчни. Следователно, за да научите скриптов език, ще ви трябват и добри познания по английски език.

Има два основни източника на информация за AppleScript технологията. Първият е официалният уебсайт на Apple Computer или по-скоро раздел от сайта, посветен на всичко, свързано със скриптове: техническа документация, уроци, примери, колекции от връзки и много други. Адресът на този раздел е http://www.apple.com/applescript/. Горещо ви съветвам първо да изтеглите Ръководството за език на AppleScript - добре илюстриран учебник, който включва много практически примери (книгата се намира на http://developer.apple.com/techpubs/macosx/Carbon/pdf/AppleScriptLanguageGuide.pdf, размер на файла - 2 ,6 MB). Вторият източник - сайтът http://www.scripter.com - съдържа много материали както за AppleScript, така и за други алтернативни скриптови езици за платформата Macintosh.

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

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

Писането на сценарии е интересно. Писането на скриптове е полезно. Писането на сценарии е дори хубаво. Въпреки че, разбира се, е много по-приятно да се отдадете на желаното безделие, докато „прясно изпеченият“ сценарий търпеливо изработва цялата седмична рутина.

Отделете време, прекарайте няколко дни в изучаване на езика, напишете няколко скрипта, които опростяват работата ви, и вие сами ще разберете, че AppleScript е много прост, много мощен и много гъвкав инструмент. Все пак, трябваше ли да очакваме нещо различно от Apple?..