Основи applescript, додаток script editor o) s x, apple, xcode developer
Додаток Script Editor
Щоб відобразити список, який включає тільки сценарії додатків і сценарії доповнень надаються OS X, виберіть Window> Library. Двічі клацніть елемент в списку, щоб відобразити його словник. Малюнок нижче показує словник для застосування в Finder OS X 10.8. Словник позначений як "Finder.sdef".

AppleScript і об'єкти
AppleScript є об'єктно-орієнтованою мовою. Коли ви пишете, компілюєте і виконуєте скрипти, все, з чим ви працюєте є об'єктами. Об'єкт є екземпляром визначення класу, яке може включати в себе властивості і дії. AppleScript визначає класи для об'єктів, з якими ви зазвичай працюєте, починаючи з верхнього рівня об'єкта script. який є загальним в сценарії в якому ви працюєте.
В об'єкті script. ви працюєте з іншими об'єктами, в тому числі:
AppleScript визначає класи для логічних значень, сценаріїв, текстів, чисел та інших видів об'єктів для роботи в сценарії;
Частини OS X і додатків з підтримкою сценаріїв, які розповсюджуються з ним, такі як Finder, системні події і події баз даних (знаходиться в / System / Library / CoreServices), визначають багато корисних класів.
Сторонні додатки з підтримкою сценаріїв визначають класи, які підтримують широкий спектр функцій.
Що включено в script об'єкт
При введенні AppleScript заяви в вікні сценарію в Script Editor, ви працюєте в верхнього рівні об'єкта script. Всі визначення об'єкта script мають той же синтаксис, за винятком того, що на вищому рівні script об'єкт не має маркування його початку і кінця.
Об'єкт script може містити наступне:
- Визначення властивостей (необов'язково):
Властивість це іменований контейнер, в якому зберігається значення.
Оброблювач run містить заяви AppleScript виконуються при запуску сценарію.
Неявний обробник run складається з будь-яких заяв поза будь-якого міститься обробника або script об'єкта.
Оброблювач є еквівалентом підпрограми.
Об'єкт script може містити вкладені об'єкти script. кожен з яких визначається так само, як об'єкт script верхнього рівня, крім того, що вкладений об'єкт script в дужках із заявами, які відзначають початок і кінець.
Ось приклад простий сценарію з одним властивістю, один обробник, один вкладений об'єкт script. і неявний обробник run з двома заявами:
Перша заява в обробнику run запускає testGreet. которsq pfgecrftn вкладений script об'єкт testGreet. Цей об'єкт script викликає обробник greetClient (). передаючи властивість defaultClientName. Оброблювач відображає діалог, вітаючи клієнта за замовчуванням, Mary Smith.
Друга заява в run обработчике викликає greetClient () безпосередньо, з аргументом "Joe Jones".
Властивість об'єкта є характеристикою, яка має єдине значення і мітку, таку як name властивість вікна або month властивість дати. Визначення для будь-якого класу AppleScript включає в себе ім'я та клас для кожного з його властивостей. Імена властивостей повинні бути унікальними в класі. Значень властивостей можуть бути для читання / запису або тільки для читання.
Клас date AppleScript, наприклад, визначає як властивості для читання / запису, так і тільки для читання. Вони включають властивість weekday. яке призначене тільки для читання, і month. day і year властивості, які доступні для читання і запису. Це тому, що значення властивості weekday залежить від інших властивостей, ви не можете встановити довільне weekday на актуальну дату.
Клас властивості може бути простим класом, таким як boolean або integer. композитним класом, таким як клас point (складається з двох цілих чисел), або більш складним класом.
Більшість класів підтримують тільки існуючі властивості. Проте, для script класу, AppleScript дозволяє визначити додаткові властивості.
Елемент являє собою об'єкт, що міститься всередині іншого об'єкта. Визначення для будь-якого класу AppleScript включає типи елементів, які він може містити. Зазвичай об'єкт може містити нуль або болше кількість кожного з його елементів.
Для заданого типу елемента, об'єкт може містити безліч елементів, або не містити, а кількість елементів, яке він містить може змінюватися з плином часу. Наприклад, можна отримати об'єкт list. який не містить елементів (це може бути порожньою список). У більш пізній час, той же список може містити багато елементів.
Чи можете ви додавати або видаляти елементи з об'єкта залежить від класу і елемента. Наприклад, об'єкт text є незмінним, ви не можете додати або видалити текст, якщо об'єкт одного разу створений. Для об'єкта list. ви не можете видаляти елементи, але ви можете використовувати команду set. щоб додати елемент в початок або в кінець:
об'єкт специфікаторів
Об'єкт специфікатор вказує інформацію, необхідну, щоб знайти інший об'єкт з точки зору об'єктів, в яких він міститься. Об'єкт специфікатор може посилатися на об'єкти програми, такі як вікна або файл, або ж об'єкт AppleScript, такі як елемент в списку чи властивість в запису.
Об'єкт специфікатор отримує повну оцінку (або дозвіл) тільки тоді, коли скрипт запускається, а не при його компіляції. Сценарій може містити коректний описувач об'єкта (наприклад, third document of application "TextEdit". Який викликає помилку при виконанні сценарію (бо, наприклад, може бути відкрито менше, ніж три документа).
Додатки зазвичай повертають об'єкт специфікаторів у відповідь на команди. Наприклад, якщо ви запитаєте Finder для вікна, він повертає інформацію, яка визначає об'єкт вікна, який запросив сценарій (якщо він існує). Контейнер верхнього рівня в об'єкті специфікаторами зазвичай сам додаток.
Що всередині об'єкта специфікатор
У наступному прикладі, клас об'єкта paragraph. Контейнер - фраза of document 1. Оскільки ця фраза всередині заяви tell. заяву tell надає контейнер верхнього рівня, додатки "TextEdit". Відмінною інформацією (посиланням) є комбінацією класу paragraph. а значення індексу, 1. які разом вказують на перший параграф.
Примітка: Якщо ви подивіться в словник для програми TextEdit, можна подумати, цей сценарій повинен сказати paragraph 1 of text of document 1. Однак, якщо значення коректно, деякі додатки полегшують життя програмістам, дозволяючи їм опустити контейнер з специфікатор об'єкта. TextEdit використовує цю функцію з указаннним неявно подконтейнеров для тексту в документі. Тобто, якщо об'єкт специфікатор ідентифікує об'єкт, наприклад, слово або абзац, який міститься в тексті документа, TextEdit автоматично постачає частиною об'єкта специфікатор of text.
контейнери
Контейнер являє собою об'єкт, що містить один або кілька об'єктів або властивостей. У специфікаторами контейнер визначає, де знайти об'єкт або властивість. Щоб вказати контейнер, використовуйте слово of або in. як в наступному заяві (з Finder tell блоку):
folder "Applications" of startup disk
Контейнер може бути об'єктом або декількома об'єктивним, перерахованими від внутрішнього до зовнішнього містить об'єкт, як показано нижче:
Ви також можете використовувати присвійні форми ( 's), щоб вказати контейнери. У наступному прикладі, самий внутрішній контейнер є first window і об'єкт, який представляє собою властивість name:
У цьому прикладі, цілю заяви tell ( "TextEdit") є зовнішній контейнер для об'єкта специфікатор.
Абсолютні і відносні специфікатор об'єкта
Абсолютний специфікатор об'єкта має достатньо інформації, щоб ідентифікувати об'єкт або об'єкти однозначно. Він може бути використаний в будь-якому місці в сценарії. Для посилання на об'єкт докладання, щоб бути абсолютним, його зовнішній контейнер повинен бути самим додатком, наприклад:
version of application "Finder" --result: "10.5.1"
На противагу, відносної специфікатор об'єкта не визначає достатньо інформації, щоб ідентифікувати об'єкт або об'єкти однозначно, наприклад:
name of item 1 of disk 2
Коли AppleScript зустрічає специфікатор відносного об'єкта в заяві tell. він намагається використовувати мета за замовчуванням, зазначену в інструкції для завершення об'єкта специфікатор. Хоча цього зазвичай не потрібно, ця неявна мета може бути задана явно за допомогою ключового слова it.
За замовчуванням мета заяви tell є об'єктом, який отримує команди, якщо жоден інший об'єкт не вказано. Наприклад, таку заяву tell говорить Finder, отримати ім'я за допомогою відносного попереднього специфікатор об'єкта.
Коли AppleScript зустрічає відносний специфікатор об'єкта за межами будь-якого tell заяви, він намагається завершити об'єкт специфікатор, переглядаючи по ланцюжку спадкування.
Об'єкт специфікаторами в довідкових об'єктах
Коли можна створити посилання (reference) на об'єкт з оператором a reference to. він містить об'єкт специфікатор. наприклад:
В цьому скрипті змінна docRef є посиланням об'єкт специфікатор якої відноситься до першого документа додатки TextEdit-що призводить, до його назви "New Report.rtf", И в даному випадку. Проте, об'єкт, який посилається на docRef може змінитися. Якщо ви відкриваєте другий документ TextEdit званий "Second Report.rtf", його вікно перекриває вікно попереднього документа, а потім запустити цей сценарій ще раз, він буде повертати ім'я нинішнього документа на передньому плані, "Second Report.rtf".
Ви могли б замість цього створити посилання з більш конкретним об'єктом специфікатором:
Якщо ви запустите цей сценарій після відкриття другого документа, він все одно буде повертати ім'я вихідного документа, "New Report.rtf", якщо документ існує.
Слід зазначити, що в результаті команди get повернеться об'єкт специфікатор посилання, а не специфікатор до об'єкта, який він визначає.
Коли він це може, AppleScript неявно разименовивает посилання на об'єкт (без використання властивості contents), як в наступному прикладі:
Приведення (перетворення об'єкта)
Приведення (також відомий як об'єкт перетворення) являє собою процес перетворення об'єктів з одного класу в інший. AppleScript перетворює об'єкт в інший клас в будь-якому з наступних випадків:
- у відповідь на as оператор
- автоматично, якщо об'єкт іншого класу, ніж очікувалося для конкретної команди або операції
Не всі класи можуть бути приведені до всіх інших типів класів. Таблиця нижче підсумовує приведення, які підтримує AppleScript для часто використовуваних класів.
Оператор as вказує конкретне приведення. Наприклад, таку заяву призводить ціле 2 в текстове "2" перед його збереженням в змінної myText:
set myText to 2 as text
Якщо ви надаєте параметру команди або операнда неправильний клас, AppleScript автоматично призводить операнд або параметр до очікуваного класу, якщо це можливо. Якщо перетворення не може бути виконано, AppleScript повідомляє про помилку.
Підтримувані приведення AppleScript за замовчуванням:
Перетворення з класу