Ссылка операторов управления

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

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

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

рассмотрение и игнорирование Операторов

considering и ignoring операторы заставляют AppleScript рассматривать или игнорировать определенные характеристики, поскольку он выполняет группы операторов. Существует два вида considering и ignoring операторы:

рассмотрение / игнорирующий (текстовое сравнение)

Укажите, как AppleScript должен атрибуты обработок, такие как случай, в выполнении текстовых сравнений.

Синтаксис
considering attribute [, attribute ... and attribute ] ¬
   [ but ignoring attribute [, attribute ... and attribute ] ]
      [ statement ]...
end considering

ignoring attribute [, attribute ... and attribute ] ¬
   [ but considering attribute [, attribute ... and attribute ] ]
      [ statement ]...
end ignoring
Заполнители
атрибут

Характеристика текста:

case

Если этот атрибут проигнорирован, прописные буквы не отличают от строчных букв. Посмотрите Специальные замечания ниже для соответствующей информации. См. также greater than, less than для описания как буквы видов AppleScript, пунктуация и другие символы.

diacriticals

Если этот атрибут проигнорирован, text объекты сравнены, как будто не присутствуют никакие диакритические знаки (такой как´, ', ˆ, ¨, и ˜); например, "résumé" равно "resume".

hyphens

Если этот атрибут проигнорирован, text объекты сравнены, как будто не присутствуют никакие дефисы; например, "anti-war" равно "antiwar".

numeric strings

По умолчанию этот атрибут проигнорирован, и текстовые строки сравнены согласно их символьным значениям. Например, если этот атрибут рассматривают, "1.10.1" > "1.9.4" оценивает как true; иначе это оценивает как false. Это может быть полезно в сравнении строк версии.

punctuation

Если этот атрибут проигнорирован,text объекты сравнены как будто никакие знаки препинания (такой как . , ? : ; ! ' ") присутствуют; например, "What? he inquired." равно "what he inquired".

white space

Если этот атрибут проигнорирован, text объекты сравнены, как будто не присутствовали пробелы, символы табуляции и символы возврата; например, "Brick house" считался бы равным "Brickhouse".

Значение по умолчанию:
Случай и числовые строки проигнорированы; всех других рассматривают.
оператор

Любой оператор AppleScript.

Примеры

Следующие примеры показывают как considering и ignoring операторы для различных атрибутов могут изменить значение текстовых сравнений.

"Hello Bob" = "HelloBob" --result: false
ignoring white space
    "Hello Bob" = "HelloBob" --result: true
end ignoring
 
"BOB" = "bob" --result: true
considering case
    "BOB" = "bob" --result: false
end considering
 
"a" = "á" --result: false
ignoring diacriticals
    "a" = "á" --result: true
end considering
 
"Babs" = "bábs" --result: false
 
ignoring case
    "Babs" = "bábs" --result: false
end ignoring
 
ignoring case and diacriticals
    "Babs" = "bábs" --result: true
end ignoring
Обсуждение

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

Специальные замечания

Поскольку text item delimiters (описанный в версии) уважение considering и ignoring атрибуты в AppleScript 2.0, разделители нечувствительны к регистру по умолчанию. Раньше, они были всегда чувствительны к регистру. Для осуществления предыдущего поведения добавьте явное considering case оператор.

considering и ignoring полностью осведомлены о Unicode. Например, с ignoring case, «Горбач» равен «ГОРБАЧ». Кроме того, символы, проигнорированные diacriticals, дефисами, пунктуацией и пробелом, определяются классами символов Unicode:

Параграф

рассмотрение / игнорирование (откликов приложений)

Разрешает сценарию продолжаться, не ожидая приложения для ответа на команды, предназначающиеся для него.

Синтаксис
considering | ignoring  application responses
   [ statement ]...
end [ considering | ignoring ]
Заполнители
оператор

Любой оператор AppleScript.

Примеры

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

tell application "Finder"
    ignoring application responses
        empty the trash
    end ignoring
end tell

Ваш сценарий может хотеть проигнорировать большинство ответов из приложения, но ожидать ответа на определенный оператор. Можно сделать так вложением considering и ignoring операторы:

tell application "Finder"
    ignoring application responses
        empty the trash
        -- other statements that ignore application responses
        considering application responses
            set itemName to name of first item of startup disk
        end considering
        -- other statements that ignore application responses
    end ignoring
end tell
Обсуждение

Ответ на команду приложения указывает, возвращает ли команда, завершенная успешно, и также, результаты и сообщения об ошибках, если существует любой. Когда Вы используете ignoring application responses блок, Вы предшествуете этой информации.

Результаты и сообщения об ошибках от команд AppleScript, пишущий сценарий дополнений и выражений не затронуты application responses атрибут.

ошибочные Операторы

Во время выполнения сценария ошибки могут произойти в операционной системе (например, когда указанный файл не найден) в приложении (например, когда сценарий указывает объект, не существующий), и в самом сценарии. Сообщение об ошибке является сообщением, предоставляющимся приложением, AppleScript или OS X, когда ошибка происходит во время обработки команды. Сообщение об ошибке может включать код ошибки, который является целым числом, идентифицирующим ошибку; ошибочное выражение, которое является выражением, обычно a text объект, описывающий ошибку; и другая информация.

Сценарий может сигнализировать ошибку — который может тогда быть обработан обработчиком ошибок — с error оператор. Это позволяет сценариям предоставлять свои собственные сообщения для ошибок, происходящих в сценарии. Например, сценарий может подготовить обрабатывать ожидаемые ошибки при помощи a try оператор. В on error ответвление a try оператор, сценарий может быть в состоянии восстановиться корректно с ошибки. В противном случае это может использовать error оператор, чтобы повторно сигнализировать сообщение об ошибке это получает, изменяя сообщение по мере необходимости для предоставления информации, определенной для сценария.

ошибка

Сигнализирует ошибку в сценарии.

Синтаксис
error [ errorMessage ] [ number errorNumber ] ¬
   [ partial resultresultList ] ¬
   [ from offendingObject ] [ to expectedType ]
Заполнители
errorMessage

A text объект, описывающий ошибку. Несмотря на то, что этот параметр является дополнительным, необходимо предоставить описания для ошибок по мере возможности. Если Вы не включаете описание ошибки, пустое text объект (»») передается обработчику ошибок.

errorNumber

Код ошибки для ошибки. Это - дополнительный параметр. Если Вы не включаете параметр числа, значение-2700 (неизвестная ошибка) передается обработчику ошибок.

Если ошибка, Вы являетесь сигнальными, является близким соответствием для того, уже имеющего постоянную ошибку AppleScript, можно использовать ту константу. Если необходимо создать новое число для ошибки, избегать использования той, конфликтующей с кодами ошибки, определенными AppleScript, OS X и менеджером по корпоративным мероприятиям Apple. В целом необходимо использовать положительные числа от 500 до 10 000. Для получения дополнительной информации посмотрите Коды ошибки и сообщения об ошибках.

resultList

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

offendingObject

Ссылка на объект, если таковые имеются, который вызвал ошибку.

expectedType

Класс. Если параметр, указанный в команде, не имел ожидаемого класса, и AppleScript был неспособен принудить его к ожидаемому классу, то можно включать ожидаемый класс в to параметр.

Примеры

Следующий пример использует a try оператор для обработки простой ошибки, и демонстрирует, как можно использовать error оператор для фиксации ошибки затем повторно сигнализируйте ошибку точно, поскольку это было получено, заставив AppleScript вывести на экран ошибочное диалоговое окно (и выполнение останова):

try
    word 5 of "one two three"
on error eStr number eNum partial result rList from badObj to expectedType
    -- statements that take action based on the error
    display dialog "Doing some preliminary handling..."
    -- then resignal the error
    error eStr number eNum partial result rList from badObj to expectedType
end try

В следующем примере, error оператор повторно сигнализирует ошибку, но опускает любую исходную информацию об ошибке и предоставляет ее собственное сообщение для появления в ошибочном диалоговом окне:

try
    word 5 of "one two three"
on error
    -- statements to execute in case of error
    error "There are not enough words."
end try

Для более всесторонних примеров посмотрите Работу с Ошибками.

если Операторы

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

if оператор также вызывают условным оператором. Булевы выражения в if операторы также вызывают тестами.

если (простой)

Если булево выражение оценивает к, выполняет оператор true.

Синтаксис
if boolean then statement 
Заполнители
булевская переменная

Булево выражение.

оператор

Любой оператор AppleScript.

Примеры

Этот сценарий выводит на экран диалоговое окно если значение булева выражения ageOfCat > 1 true. (Переменная ageOfCat установлен ранее.)

if ageOfCat > 1 then display dialog "This is not a kitten."
если (составной объект)

Если булево выражение (или выражения) оценивает к, выполняет группу (или группы) операторов true.

Синтаксис
if boolean [ then ]
[ statement ]...
[else if boolean [ then ]
[ statement ]...]...
[else
[ statement ]...]
end [ if ]
Заполнители
булевская переменная

Булево выражение.

оператор

Любой оператор AppleScript.

Примеры

Следующий пример использует составной объект if оператор, с финалом else пункт, для отображения оператора на основе текущей температуры (полученный отдельно):

if currentTemp < 60 then
    set response to "It's a little chilly today."
else if currentTemp > 80 then
    set response to "It's getting hotter today."
else
    set response to "It's a nice day today."
end if
display dialog response
Обсуждение

if оператор может содержать любое число else if пункты; AppleScript ищет первое булево выражение, содержавшееся в if или else if пункт, который является true, выполняет операторы, содержавшиеся в его блоке (операторы между одним else if и следующий else if или else пункт), и затем выходит if оператор.

if оператор может также включать финал else пункт. Операторы в его блоке выполняются если никакой другой тест в if передачи оператора.

повторите Операторы

Вы используете a repeat оператор, чтобы создать циклы или выполнить группы повторных операторов в сценариях.

Существует много типов repeat оператор, каждый отличающийся по пути это завершает цикл. Каждая из опций, от повторения цикла, определенное число раз, к цикличному выполнению по элементам в списке, к цикличному выполнению до условия встречено, и т.д., предоставляет себя определенным видам задач.

Для получения информации о тестировании и отладке repeat операторы, посмотрите Отладку Сценарии AppleScript.

выход

Завершает a repeat цикл и выполнение резюме с оператором, следующим repeat оператор.

Можно только использовать exit оператор внутри a repeat оператор. Хотя обычно используется с repeat (forever) форма, можно также использовать exit оператор с другими типами repeat оператор.

Синтаксис
exit [ repeat ]
Примеры

Посмотрите пример в repeat (forever).

повторитесь (навсегда)

Повторяет оператор (или операторы) до exit с оператором встречаются.

Завершать a repeat (навсегда) оператор, Вы можете:

Синтаксис
repeat
   [ statement ]...
end [ repeat ]
Заполнители
оператор

Любой оператор AppleScript.

Примеры

Эта форма repeat оператор подобен repeat until форма, за исключением того, что вместо того, чтобы вставить тест repeat сам оператор, Вы определяете в цикле, когда пора выйти. Вы могли бы использовать эту форму, например, для ожидания длинной или неопределенной работы для завершения:

repeat
    -- perform operations
    if someBooleanTest then
        exit repeat
    end if
end repeat

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

повторите (число) времена

Повторяет оператор (или операторы) конкретное количество времен.

Синтаксис
repeat integer [ times ]
   [ statement ]...
end [ repeat ]
Заполнители
целое число

Указывает число раз для повторения операторов в организации цикла.

Вместо целого числа, можно указать любое значение, которое может быть принуждено к целому числу.

Если значение - меньше чем один, организация repeat оператор не выполняется.

оператор

Любой оператор AppleScript.

Примеры

Следующий обработчик использует repeat (number) times форма repeat оператор для увеличивания переданного числа к переданному питанию:

on raiseToTheNth(x, power)
    set returnVal to x
    repeat power - 1 times
        set returnVal to returnVal * x
    end repeat
    return returnVal
end raiseToTheNth
повторитесь до

Повторяет оператор (или операторы), пока не удовлетворяют условию. Тестирует условие прежде, чем выполнить любые операторы.

Синтаксис
repeat until boolean
   [ statement ]...
end [ repeat ]
Заполнители
булевская переменная

Булево выражение. Если это имеет значение true при вводе цикла не выполняются операторы в цикле.

оператор

Любой оператор AppleScript.

Примеры

Следующий пример использует repeat until форма repeat оператор, чтобы позволить пользователю вводить записи базы данных. Обработчик enterDataRecord(), который не показан, возвраты true если пользователь сделан, введя записи:

set userDone to false
repeat until userDone
    set userDone to enterDataRecord()
end repeat
повторитесь в то время как

Повторяет оператор (или операторы), поскольку долго в качестве одного из условий встречен. Тестирует условие прежде, чем выполнить любые операторы. Подобный repeat until форма, за исключением того, что это продолжается, в то время как условие true, вместо того, пока это не true.

Синтаксис
repeat while boolean
   [ statement ]...
end [ repeat ]
Заполнители
булевская переменная

Булево выражение. Если это имеет значение false при вводе цикла не выполняются операторы в цикле.

оператор

Любой оператор AppleScript.

Примеры

Следующий пример использует repeat while форма repeat оператор, чтобы позволить пользователю вводить записи базы данных. В этом случае мы только что инвертировали логику, показанную в repeat until пример. Здесь, обработчик enterDataRecord(), который не показан, возвраты true если пользователь не сделан, введя записи:

set userNotDone to true
repeat while userNotDone
    set userNotDone to enterDataRecord()
end repeat
повторитесь с loopVariable (от startValue до stopValue)

Повторяет оператор (или операторы), пока значение переменной цикла управления не превышает значение предопределенного значения остановки.

Синтаксис
repeat with  loopVariable  from  startValue  to  stopValue [ by  stepValue ]
   [ statement ]...
end [ repeat ]
Заполнители
loopVariable

Управляет числом итераций. Это может быть ранее определенная переменная или новая переменная, которую Вы определяете в repeat оператор.

startValue

Указывает значение, присваивающееся loopVariable, когда вводится цикл.

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

stopValue

Указывает значение. Когда то значение превышено значением loopVariable, итеративных концов. Если stopValue является меньше, чем startValue, организация не выполняется.

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

stepValue

Указывает значение, добавляющееся к loopVariable после каждой итерации цикла. Можно присвоиться integer или a real значение; a real значение округлено к integer.

Значение по умолчанию:
1
оператор

Любой оператор AppleScript.

Примеры

Следующий обработчик использует repeat with loopVariable (from startValue to stopValue) форма repeat оператор для вычислений факториального значения (факториал числа является продуктом всех положительных целых чисел от 1 до того числа):

on factorial(x)
    set returnVal to 1
    repeat with n from 2 to x
        set returnVal to returnVal * n
    end repeat
    return returnVal
end factorial
Обсуждение

Можно использовать существующую переменную в качестве переменной цикла в a repeat with loopVariable (from startValue to stopValue) оператор или определяет новый в операторе. В любом случае переменная цикла определяется вне цикла. Можно изменить значение переменной цикла в теле цикла, но это будет сброшено к следующему значению цикла в следующий раз через цикл. После того, как цикл завершается, переменная цикла сохраняет свое последнее значение.

AppleScript оценивает startValue, stopValue, и stepValue, когда это начинает выполнять цикл и хранит значения внутренне. В результате при изменении значений в организации цикла она не изменяет выполнение цикла.

повторитесь с loopVariable (в списке)

Циклы через элементы в указанном списке.

Число итераций равно числу элементов в списке. В первой итерации значение переменной является ссылкой на первый элемент в списке во второй итерации, это - ссылка на второй элемент в списке и т.д.

Синтаксис
repeat with loopVariable in list
   [ statement ]...
end [ repeat ]
Заполнители
loopVariable

Любая ранее определенная переменная или новая переменная Вы определяете в repeat оператор (см. Обсуждение).

список

Список или объектный спецификатор (такой как words 1 thru 5) чье значение является списком.

список может также быть записью; AppleScript принуждает запись на список (см. Обсуждение).

оператор

Любой оператор AppleScript.

Примеры

Следующий сценарий исследует список слов с repeat with loopVariable (in list) форма repeat оператор, выводя на экран диалоговое окно, если это считает слово «молотком» в списке. Обратите внимание на то, что в цикле, переменная цикла (currentWord) ссылка на элемент в списке, таким образом, в тестовом операторе (if contents of currentWord is equal to "hammer" then) это должно быть брошено к тексту (as text).

set wordList to words in "Where is the hammer?"
repeat with currentWord in wordList
    log currentWord
    if contents of currentWord is equal to "hammer" then
        display dialog "I found the hammer!"
    end if
end repeat

Оператор log currentWord регистрирует текущий элемент списка к окну журнала Редактора сценариев. Для получения дополнительной информации посмотрите Отладку Сценарии AppleScript.

Обсуждение

Можно использовать существующую переменную в качестве переменной цикла в a repeat with loopVariable (in list) оператор или определяет новый в repeat with… оператор. В любом случае переменная цикла определяется вне цикла. Можно изменить значение переменной цикла в теле цикла, но это будет сброшено к следующему значению цикла в следующий раз через цикл. После того, как цикл завершается, переменная цикла сохраняет свое последнее значение.

AppleScript оценивает loopVariable in перечислите как объектный спецификатор, берущий значение item 1 of list, item 2 of list, item 3 of list, и т.д., пока это не достигает последнего элемента в списке, как показано в следующем примере:

repeat with i in {1, 2, 3, 4}
    set listItem to i
end repeat
--result: item 4 of {1, 2, 3, 4} --result: an object specifier

Установить переменную в значение элемента в списке, а не ссылку на элемент, использование contents of свойство:

repeat with i in {1, 2, 3, 4}
    set listItem to contents of i
end repeat
--result: 4

Можно также использовать элементы списка непосредственно в выражениях:

set total to 0
repeat with i in {1, 2, 3, 4}
    set total to total + i
end repeat
--result: 10

Если значение списка является записью, AppleScript принуждает запись на список путем разделения меток свойства. Например, {a:1, b:2, c:3} становится {1, 2, 3}.

скажите Операторы

A tell оператор указывает цель по умолчанию — т.е. объект, в который отправляются команды, если они не включают прямой параметр. Операторы в a tell оператор, которые используют терминологию от предназначенного объекта, компилируется против словаря того объекта.

Объект a tell оператор обычно является ссылкой на объект приложения или a script объект. Например, следующий tell оператор предназначается для приложения Средства поиска:

tell application "Finder"
    set frontWindowName to name of front window
    -- any number of additional statements can appear here
end tell

Можно вложить tell операторы в другом tell операторы, пока Вы следуете за синтаксисом и правилами, описанными в tell (compound).

Когда необходимо вызвать обработчик из a tell оператор, существуют специальные термины, которые Вы используете, чтобы указать, что обработчик является частью сценария и не команды, которая должна быть отправлена в объект tell оператор. Эти условия описаны в этом и мне Ключевые слова и в Призыве Обработчиков сказать Оператор.

A tell оператор, предназначающийся для локального приложения, не заставляет его запускаться, если оно уже не работает. Например, сценарий может исследовать running свойство предназначенного application объект определить, работает ли приложение прежде, чем попытаться отправить ему какие-либо команды. Если это не будет работать, то это не будет запущено.

Если a tell оператор предназначается для локального приложения и выполняет любые операторы, требующие ответа от приложения, тогда AppleScript запустит приложение, если это не будет уже работать. Приложение запускается, как скрытый, но сценарий может отправить его activate команда для выявления его, в случае необходимости.

A tell оператор, предназначающийся для удаленного приложения, не заставит его запускаться — фактически, оно не будет компилировать или работать, если не будет уже работать приложение. И при этом это не возможно к доступу running свойство приложения на удаленном компьютере.

скажите (простой)

Указывает целевой объект и команду для отправки к нему.

Синтаксис
tell referenceToObject to statement 
Заполнители
referenceToObject

Любой объект. Обычно объектный спецификатор или a reference объект (который содержит объектный спецификатор).

оператор

Любой оператор AppleScript.

Примеры

Это простое tell оператор закрывает переднее окно Finder:

tell front window of application "Finder" to close

Для получения дополнительной информации о том, как указать объект приложения, посмотрите application класс.

скажите (соединяют)

Указывает целевой объект и одну или более команд для отправки к нему. Составной объект tell оператор отличается от простого tell оператор в этом это всегда включает end оператор.

Синтаксис
tell referenceToObject  
   [ statement ]...
end [ tell ]
Заполнители
referenceToObject

Любой объект. Обычно объектный спецификатор или a reference объект (который содержит объектный спецификатор).

оператор

Любой оператор AppleScript, включая другого tell оператор.

Примеры

Следующие утверждения показывают, как закрыть окно, использующее сначала составной объект tell оператор, затем с двумя изменениями простого tell оператор:

tell application "Finder"
    close front window
end tell
 
tell front window of application "Finder" to close
tell application "Finder" to close front window

Следующий пример показывает вложенный tell оператор:

tell application "Finder"
    tell document 1 of application "TextEdit"
        set newName to word 1 -- handled by TextEdit
    end tell
    set len to count characters in newName -- handled by AppleScript
    if (len > 2) and (len < 15) then -- comparisons handled by AppleScript
        set name of first item of disk "HD" to newName -- handled by Finder
    end if
end tell

Этот пример работает, потому что в каждом случае терминология, понятая под определенным приложением, используется в a tell блок, предназначающийся для того приложения. Если бы Вы попросили у Средства поиска, Однако это не скомпилировало бы word 1 из документа, или сказал TextEdit set name из первого элемента на диске, потому что те приложения не поддерживают те условия.

попробуйте Операторы

A try оператор обеспечивает средние значения для сценариев для обработки потенциальных ошибок. Это пытается выполнить один или несколько операторов и, если ошибка происходит, выполняет отдельный набор операторов для контакта с состоянием ошибки. Если ошибка происходит и существует нет try оператор в цепочке вызова для обработки его AppleScript выводит на экран ошибку и остановки выполнения сценария.

Для соответствующей информации посмотрите ошибочные Операторы и Обработку ошибок AppleScript.

попробовать

Попытки выполнить список операторов AppleScript, вызывая обработчик ошибок, если какой-либо из операторов приводит к ошибке.

A try оператор является составным оператором с двумя частями, содержащим серию операторов AppleScript, сопровождаемых обработчиком ошибок, который будет вызван, если какой-либо из тех операторов вызывает ошибку. Если оператор в a, вызвавший ошибку включен try оператор, тогда AppleScript передает управление к обработчику ошибок. После того, как обработчик ошибок завершается, управление сразу передает оператору после конца try оператор.

Синтаксис
try
   [ statement ]...
[ on error [ errorMessage ] [ number errorNumber ] [ from offendingObject ] ¬
   [ partial result resultList ] [ to expectedType ]
      [ statement ]... ]
end [ error | try ]
Заполнители
оператор

Любой оператор AppleScript.

errorMessage

A text объект, описывающий ошибку.

errorNumber

Код ошибки, целое число. Для возможных значений посмотрите Коды ошибки и сообщения об ошибках.

offendingObject

Ссылка на объект, если таковые имеются, который вызвал ошибку.

resultList

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

expectedType

Ожидаемый класс. Если ошибка была вызвана отказом приведения, значение этой переменной является классом переставшего работать приведения. (Второй пример ниже шоу, как это работает в случае, где AppleScript неспособен принудить a text объект в integer.)

переменная

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

Примеры

Следующий пример показывает, как можно использовать a try оператор для обработки кнопки «Cancel» для a display alert команда. Отмена возвращает код ошибки-128, но не является действительно ошибкой. Этот тестовый обработчик просто выводит на экран диалоговое окно для указания, когда пользователь отменяет или когда происходит некоторая другая ошибка.

try
    display alert "Hello" buttons {"Cancel", "Yes", "No"} cancel button 1
on error errText number errNum
    if (errNum is equal to -128) then
        -- User cancelled.
        display dialog "User cancelled."
    else
        display dialog "Some other error: " & errNum & return & errText
    end if
end try

Можно также использовать упрощенную версию try оператор, проверяющий на просто единственный код ошибки. В следующем примере только обрабатывается ошибка-128. Любой другой код ошибки проигнорирован этим try оператор, но автоматически отказан цепочка вызова, где это может быть обработано другим try операторы.

try
    display alert "Hello" buttons {"Cancel", "Yes", "No"} cancel button 1
on error number -128
    -- Either do something special to handle Cancel, or just ignore it.
end try

Следующий пример демонстрирует использование to ключевое слово для получения дополнительной информации об ошибке, происходящей во время отказа приведения:

try
    repeat with i from 1 to "Toronto"
        -- do something that depends on variable "i"
    end repeat
on error from obj to newClass
    log {obj, newClass} -- Display from and to info in log window.
end try

Это repeat оператор перестал работать потому что text объект "Toronto" не может быть принужден к integer. Обработчик ошибок просто пишет значения obj (незаконное значение, "Toronto") и newClass (класс приведения, переставшего работать, integer) к окну Event Log History Редактора сценариев (и к области Event Log окна сценария). Результат “(*Toronto, целое число*)”, указывая, что ошибка произошла при попытке принудить «Торонто» к целому числу.

Для дополнительных примеров посмотрите Работу с Ошибками.

используйте Операторы

A use оператор объявляет требуемый ресурс для сценария — приложения, библиотеки сценария, платформы, или версии самого AppleScript — и может дополнительно импортировать терминологию из ресурса для использования в другое место в сценарии. Эффекты и синтаксис use варьируйтесь немного в зависимости от используемого ресурса; различные случаи описаны ниже.

Основная функция use должен потребовать, чтобы ресурс присутствовал, прежде чем сценарий начинает выполняться. Если требование не может быть удовлетворено, сценарий не будет работать. A use оператор может также указать минимальную версию для требуемого ресурса, такого как минимальная совместимая версия приложения. В этом примере AppleScript гарантирует, что версия 7.0 Safari или позже доступна:

use application "Safari" version "7.0"

use операторы могут также импортировать терминологию из используемого ресурса, делая условия доступными всюду по сценарию, не требуя использования tell или using terms from. AppleScript отслеживает, куда условия были импортированы из, и отправляет события, использующие те термины к той цели. Обычно, команды отправляются в текущую цель (it) как описано в Target, но импортированной терминологии переопределяет это. Если …

… тогда команда отправляется в источник импорта вместо этого. Даже если команда внутри a, это происходит tell блок для различной цели. Например, этот сценарий использует команду от Safari:

use application "Safari"
search the web for "AppleScript"

Импорт происходит по умолчанию, но может быть подавлен с помощью without importing параметр, если применимо. Можно использовать это для добавления требований к существующим сценариям, не изменяя ничто больше о сценарии:

use application "Safari" version "7.0" without importing

Поскольку условия Safari не импортируются, сценарий должен будет все еще использовать tell отправить ему события.

используйте (AppleScript)

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

Синтаксис
use AppleScript [ version versionText ] 
Заполнители
versionText

Требуемая минимальная версия AppleScript, как строка версии такой как "2.3.2". Если опущено, ее значение по умолчанию 2.3, версия в который use был представлен. Это значение всегда является текстом, не числом, и сравнено как будто considering numeric strings имеет силу. Например, "2.10" больше, чем "2.3", потому что 10 больше, чем 3.

Примеры

В его самой простой форме, use может использоваться, чтобы объявить, что сценарий использует AppleScript:

use AppleScript

Это также неявно означает, что сценарий использует версию 2.3 AppleScript или позже, когда use был сначала представлен, и что сценарий ожидает более новое поведение для того, как пишущие сценарий дополнения обработаны, описаны в использовании (пишущий сценарий дополнений).

A use команда может также явно указать минимальную требуемую версию AppleScript:

use AppleScript version "2.3.2"
используйте (сценарии дополнений)

Объявляет, что сценарий использует дополнения сценариев.

Синтаксис
use scripting additions ¬ 
   [ with importing | without importing | importing boolean ]
Заполнители
булевская переменная

Булево значение,true или false. AppleScript перекомпилирует это к with importing или without importing. Значение по умолчанию with importing.

Примеры

Использовать use scripting additions к explictly объявляют что использование сценария, пишущее сценарий дополнительных команд:

use scripting additions
Обсуждение

Если сценарий имеет, пишущие сценарий дополнительные команды обрабатываются по-другому use команды. Если сценарий имеет один или больше use команды любого вида, пишущие сценарий дополнительные команды не доступны по умолчанию. Необходимо явно указать, что Вы хотите использовать дополнения сценариев, любого с a use или using terms from команда.

use scripting additions
display dialog "hello world"
using terms from scripting additions
   display dialog "hello world"
end using terms from

Если сценарий использует use scripting additions, AppleScript может оптимизировать дополнительные команды сценариев, отправив им в текущее приложение вместо текущей цели (it) когда это не изменяет значение сделать так. Например, случайное число не должно быть отправлено в другое рвение правильно и будет всегда отправляться в текущее приложение, когда импортировано с use. Без a use scripting additions команда, AppleScript должен использовать менее эффективную схему диспетчеризации, таким образом, рекомендуется явно объявление их.

используйте (приложение или сценарий)

Объявляет требуемую библиотеку приложения или сценария и может импортировать ее условия для использования позже в сценарии.

Синтаксис
use [ identifier : ] ( script | application ) specifier ¬
   [ version versionText ] ¬
   [ with importing | without importing | importing boolean ]
Заполнители
versionText

Требуемая минимальная версия ресурса как номер версии, такой как "2.3.2". Это значение всегда является текстом, не числом, и сравнено как будто considering numeric strings имеет силу. Например, "2.10" больше, чем "2.3", потому что 10 больше, чем 3.

идентификатор

Дополнительный идентификатор для ресурса.

спецификатор

Данные спецификатора для ресурса. Это обычно - имя, как в use application "Finder" или use script "My Library", но может быть любая допустимая форма спецификатора, такой как ID, как в use application id "com.apple.mail".

булевская переменная

Булево значение,true или false. AppleScript перекомпилирует это к with importing или without importing. Значение по умолчанию with importing.

Примеры

A use команда может обратиться к приложению:

use application "Finder"

… или библиотека сценария:

use script "Happy Fun Ball"

Если дополнительный идентификатор дан, он определяет свойство, значение которого является требуемым ресурсом. Это может сделать более удобным относиться к ресурсу, как в этом примере: get оператор использует идентификатор Safari вместо полного спецификатора application "Safari".

use Safari : application "Safari"
get the name of Safari's front window

При помощи use с многократными приложениями можно объединить условия из других источников способами невозможное использование tell, потому что tell только делает один источник терминологии доступным за один раз. Например, следующий сценарий, в одном операторе, использует Почту и Safari для поиска сети отправителя в настоящее время выбираемого сообщения электронной почты. get событие отправляется в Почту, потому что это определяет message viewer, в то время как search the web событие отправляется в Safari.

use application "Mail"
use application "Safari"
 
search the web for the sender of the first item of ¬
   (get selected messages of the front message viewer)
используйте (платформа)

Объявляет требуемую платформу для использования с мостом AppleScript/Objective-C. Это только поддерживается в библиотеках сценария.

Синтаксис
use  framework  specifier
Заполнители
спецификатор

Данные спецификатора для ресурса. Это может быть базовым именем ("AppKit"), полное имя ("AppKit.framework"), или путь POSIX ("/System/Library/Frameworks/AppKit.framework").

Примеры

Большинство сценариев, использующих мост AppleScript/Objective-C, должно иметь по крайней мере один из этих двух use операторы:

use framework "Foundation"
use framework "AppKit"

Можно также использовать другие платформы, такие как WebKit:

use framework "WebKit"
Обсуждение

Когда Вы объявляете требуемую платформу, AppleScript гарантирует, что платформа загружается прежде, чем выполнить Ваш сценарий. Чтобы гарантировать, чтобы Ваши библиотеки сценария AppleScript/Objective-C работали правильно в любом приложении, объявите все необходимые платформы явно; иначе, нет никакой гарантии, что данная платформа будет доступна, и Ваш сценарий может перестать работать.

version параметр не поддерживается для платформ; чтобы проверить действительно ли поддержка платформы определенная функция, использовать NSClassFromString или -respondsToSelector:.

использование терминов от Операторов

A using terms from оператор позволяет Вам указать, какую терминологию AppleScript должен использовать в компиляции операторов в сценарии. Принимая во внимание, что a tell оператор указывает цель по умолчанию (часто приложение), в который команды отправляются и терминология для использования, a using terms from оператор указывает только терминологию.

A using terms from оператор может быть полезным в записи сценариев обработчика событий приложения, таким как Почтовые правила.

Другое использование для этого типа оператора со сценарием, предназначающимся для приложения на удаленном компьютере, который может не быть доступным, когда Вы компилируете сценарий (или приложение может не работать). Или, Вы могли бы разрабатывать локально и только хотеть протестировать с удаленным приложением в более позднее время. В любом случае можно использовать a using terms from оператор для указания локального приложения (по-видимому с терминологией, соответствующей тот на удаленном компьютере) скомпилировать против.

Даже если оператор содержится в a using terms from компиляции оператора, сценарий может перестать работать, когда выполнено, потому что терминология целевого приложения может отличаться от используемого в компиляции.

Можно вложить using terms from операторы. Когда Вы делаете так, каждый оператор сценария компилируется против терминологии приложения, названного в самом внутреннем включении using terms from оператор.

использование терминов от

Дает AppleScript команду использовать терминологию из указанного источника в компиляции вложенных операторов.

Синтаксис
using terms from ( application  |  script  | scripting additions) 
   [ statement ]...
end [ using terms from ]
Заполнители
приложение

Спецификатор для объекта приложения.

сценарий

Спецификатор для библиотеки сценария.

оператор

Любой оператор AppleScript.

Примеры

Следующий пример показывает, как использовать a using terms from оператор в записи Почтового сценария действия правила. Эти сценарии принимают следующую форму:

using terms from application "Mail"
  on perform mail action with messages theMessages for rule theRule
    tell application "Mail"
        -- statements to process each message in theMessages
    end tell
  end perform mail action with messages
end using terms from

Для использования сценария Вы открываете Preferences для Почтового приложения, создаете или редактируете правило и присваиваете сценарий как действие для правила.

Для примера, работающего с приложением на удаленной машине, посмотрите Удаленные приложения Предназначения.

Как обсуждено в Операторах использования, сценарии с любым use операторы не делают дополнительные условия сценариев видимыми по умолчанию. Можно позволить писать сценарий дополнительных условий для определенных частей сценария с using terms from как в этом примере:

use AppleScript
-- scripting addition commands such as "display dialog" will not compile here...
using terms from scripting additions -- ...but will compile within this block.
   display dialog "Hello world!"
end using terms from
Обсуждение

using terms from не импортирует условия как use делает и подвергается тем же пределам на использовании терминологии как tell. using terms from scripting additions не включает оптимизацию сценариев дополнительных команд как use scripting additions делает.

с Операторами тайм-аута

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

с тайм-аутом

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

Синтаксис
with timeout [ of ] integerExpression second[s] 
   [ statement ]...
end [ timeout ]
Заполнители
integerExpression

Количество времени, в секундах, AppleScript должен ожидать прежде, чем привести к таймауту (и прервать команду).

оператор

Любой оператор AppleScript.

Примеры

Следующий сценарий говорит TextEdit закрывать свой первый документ; если документ был изменен, он спрашивает пользователя, если должен быть сохранен документ. Это включает оператор with timeout of 20 seconds, так, чтобы, если пользователь не завершается close работа в течение 20 секунд, работа испытывает таймаут.

tell application "TextEdit"
    with timeout of 20 seconds
        close document 1 saving ask
    end timeout
end tell
Обсуждение

Когда команде не удается завершиться в выделенное время (ли значение по умолчанию двух минут или времени, установленного a with timeout оператор), AppleScript прекращает выполнять сценарий и возвращает ошибку "event timed out". AppleScript не отменяет работу — это просто останавливает выполнение сценария. Если Вы хотите, чтобы сценарий продолжался, можно обернуть операторы в a try оператор. Однако, ли Ваш сценарий может отправить команду для отмены нарушающей длинной работы после того, как тайм-аут зависит от приложения, выполняющего команду.

A with timeout оператор применяется только к командам, отправленным в объекты приложения, не в команды, отправленные в приложение, выполняющее сценарий.

В некоторых ситуациях можно хотеть использовать ignoring application responses оператор (вместо a with timeout оператор) так, чтобы Ваш сценарий не ожидал команд приложения для завершения. Для получения дополнительной информации посмотрите рассмотрение и игнорирование Операторов.

с Операторами транзакции

При выполнении сценария AppleScript может отправить одно или более событий Apple в целевые приложения. Транзакция является рядом операций, применяющихся как единый блок — или все изменения применяются, или ни один не. Этот механизм работает только с приложениями, поддерживающими его.

с транзакцией

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

Синтаксис
with transaction [ session ] 
   [ statement ]...
end [ transaction ]
Заполнители
сеанс

Объект, идентифицирующий определенный сеанс.

оператор

Любой оператор AppleScript.

Примеры

Этот пример использует a with transaction оператор, чтобы гарантировать, что запись может быть изменена одним пользователем, не будучи измененным другим пользователем одновременно. (В следующих примерах, “Маленький DB” и “Супер DB” являются представительными приложениями базы данных.)

tell application "Small DB"
    with transaction
        set oldName to Field "Name"
        set oldAddress to Field "Address"
        set newName to display dialog ¬
            "Please type a new name" ¬
            default answer oldName
        set newAddress to display dialog ¬
            "Please type the new address" ¬
            default answer oldAddress
        set Field "Name" to newName
        set Field "Address" to newAddress
    end transaction
end tell

set операторы получают текущую стоимость полей Name and Address и приглашают пользователя изменять их. Включение их set операторы на сингле with transaction оператор сообщает приложению, что другим пользователям нельзя разрешить получить доступ к той же записи одновременно.

A with transaction оператор работает только с приложениями, явно поддерживающими его. Некоторые приложения только поддерживают with transaction операторы (как тот в предыдущем примере), которые не берут объект сеанса в качестве параметра. Другая поддержка приложений оба with transaction операторы, не имеющие никакого параметра и with transaction операторы, берущие параметр сеанса.

Следующий пример демонстрирует, как указать сеанс для a with transaction оператор:

tell application "Super DB"
    set mySession to make session with data {user: "Bob", password: "Secret"}
    with transaction mySession
        ...
    end transaction
end tell