script [識別子]
	[prop[erty] ラベル : 様々な値]...
	[global 変数1 [, 変数1...]]
	[local 変数2 [, 変数2...]]
	[]
	[ハンドラ...]
end [script]

引数(Parameters)

識別子スクリプトオブジェクトの名前
ラベル属性を識別するためのラベル
様々な値属性の初期値
変数1大域変数
変数2局所変数
AppleScriptの任意の文
ハンドラ命令に応答するハンドラ

解説(Note)

 scriptブロック内は、独立したスクリプトとして扱われ、属性や利用者定義ハンドラを設定することができる。
 命令ハンドラも存在し、文は暗黙のrunハンドラとなる。

 スクリプトオブジェクトの定義と同時にscript値が代入された変数が定義されている。

set 識別子 to «script 識別子»

という処理がスクリプトオブジェクトの定義と同時に行われていると考えると分かりやすいかもしれない。

 ハンドラの中で定義した場合、定義したスクリプトオブジェクトを結果に返すことで、多くのスクリプトオブジェクトを簡単に定義していくことができる(例3)例の場合は、ハンドラの最後の行での値が«script x»であるので、returnを省略している(通常は明示的にreturn xとすべきだろう)

 属性やハンドラを継承して、新しいスクリプトオブジェクトを作ることができ、その場合parent属性を指定する。

 Mac OS X10.9以降では、use文script文を使い、スクリプトライブラリに置いたスクリプトファイルを読み込んで、スクリプトオブジェクトとして活用できる。
 それ以前の環境でも、OSAXのload script命令を使ってスクリプトファイルを利用できる。

 属性は以下のタイミングで初期化される。

定義場所初期化のタイミング
スクリプト自身(me)コンパイル
地の部分(又はrunハンドラ内)スクリプト起動
ハンドラ内ハンドラが呼び出し
スクリプトオブジェクト内スクリプト起動

用例(Example)

  1. tell x to run
    
    script x
    	display dialog "runメッセージを受け取りました"
    end script
  2. name of  x
    
    script x
    	prop name: "スクリプトオブジェクト"
    end script
  3. set y to make_scrObj()
    num of y
    
    on make_scrObj()
    	script x
    		prop num: 100
    	end script
    end  make_scrObj
  4. i of x2 of x1
    
    script x1
    	script x2
    		property i : 4
    	end script
    end script
※2,3,4 結果ウィンドウでResultを見て下さい。