script [識別子] [prop[erty] ラベル : 様々な値]... [global 変数1 [, 変数1...]] [local 変数2 [, 変数2...]] [文] [ハンドラ...] end [script]
| 識別子 | スクリプトオブジェクトの名前 |
| ラベル | 属性を識別するためのラベル |
| 様々な値 | 属性の初期値 |
| 変数1 | 大域変数 |
| 変数2 | 局所変数 |
| 文 | AppleScriptの任意の文 |
| ハンドラ | 命令に応答するハンドラ |
scriptブロック内は、独立したスクリプトとして扱われ、属性や利用者定義ハンドラを設定することができる。
命令ハンドラも存在し、文は暗黙のrunハンドラとなる。
スクリプトオブジェクトの定義と同時にscript値が代入された変数が定義されている。
set 識別子 to «script 識別子»
という処理がスクリプトオブジェクトの定義と同時に行われていると考えると分かりやすいかもしれない。
ハンドラの中で定義した場合、定義したスクリプトオブジェクトを結果に返すことで、多くのスクリプトオブジェクトを簡単に定義していくことができる(例3)例の場合は、ハンドラの最後の行での値が«script x»であるので、returnを省略している(通常は明示的にreturn xとすべきだろう)
属性やハンドラを継承して、新しいスクリプトオブジェクトを作ることができ、その場合parent属性を指定する。
Mac OS X10.9以降では、use文、script文を使い、スクリプトライブラリに置いたスクリプトファイルを読み込んで、スクリプトオブジェクトとして活用できる。
それ以前の環境でも、OSAXのload script命令を使ってスクリプトファイルを利用できる。
属性は以下のタイミングで初期化される。
| 定義場所 | 初期化のタイミング |
|---|---|
| スクリプト自身(me) | コンパイル |
| 地の部分(又はrunハンドラ内) | スクリプト起動 |
| ハンドラ内 | ハンドラが呼び出し |
| スクリプトオブジェクト内 | スクリプト起動 |
tell x to run
script x
display dialog "runメッセージを受け取りました"
end scriptname of x
script x
prop name: "スクリプトオブジェクト"
end scriptset y to make_scrObj()
num of y
on make_scrObj()
script x
prop num: 100
end script
end make_scrObji of x2 of x1
script x1
script x2
property i : 4
end script
end script