AppleScriptには、すでに保存されているスクリプト書類を読み込んで使うための仕組みが、いくつか用意されています。
その中でも一番簡単なのが、script
を使った方法です(注1)。
読み込む書類はスクリプトライブラリのフォルダに置きます。
スクリプトライブラリの位置は、ユーザのホーム以下の"/Library/Script Libraries/"です。
Libraryフォルダは通常表示されていませんが、Finderの[移動]-[フォルダへ移動..]に"~/Library"を入力して移動すれば存在しています。
もしくは、optionキーを押しながら[移動]-[ライブラリ]を選んでください。
初期状態では"Script Libraries"フォルダはないので、ライブラリフォルダに作っておきます。
本書は、AppleScript入門なのでスクリプトを用意しておきましょう。
以下のスクリプトでライブラリが開かれ、スクリプトライブラリのフォルダが作られます。
set pathToScriptLibrariesFolder to ¬
POSIX path of (path to library folder from user domain) ¬
as POSIX file -- (注2)
tell application "Finder"
open pathToScriptLibrariesFolder
make folder at pathToScriptLibrariesFolder ¬
with properties {name:"Script Libraries"}
end tell
スクリプトライブラリは頻繁に使うことになりますので、Dockなりなんなりに登録しておくといいでしょう。
そして、先ほど「設定の保存に属性を使う」で作ったスクリプトを"counter.scpt"という名前で、スクリプトライブラリに保存しておきます。
さて、これで準備は整ったのでスクリプトが読み込めます。
読み込んだスクリプトは、アプリケーションと同様にtell
ブロックに指定して利用できます。
[実行]を繰り返すたび、カウントアップされていくことが確認できると思います。
これで動くのは「暗黙のrun
ハンドラ」があるからです(注3)。
run
以外のハンドラが読み込んだスクリプトに存在していれば、それも利用できます。
tell script "counter" -- (注4)
run
end tell
属性も同じようにして使えるのですが、Itsを属性の前に付けて(注5)、tellブロックで指定したスクリプトオブジェクトのものであることを明示する必要があります。
tell script "counter"
its num_
end tell
一度使ったスクリプトオブジェクトはスクリプト内で使い回されるので、気軽に何度も呼び出して構いません。
呼び出すたびにファイルを読んだりはしないのです。
スクリプトバンドルやアプレットの場合、バンドルを開くとContentsフォルダその中にResoucesフォルダがありますが、そこにScript Librariesフォルダを作って、"Contents/Resouces/Script Libraries"としておけば、まず最初にこのフォルダにあるスクリプトをscript
に割り当てます。
エディタでバンドル情報を見れば、Resoucesフォルダが表示されるので、そこで追加するのが簡単です。
スクリプトが複雑化した場合に、ファイルを分割できて、なかなか便利です。