use AppleScript [version 文字列1]
use [変数名:]application 様々な値¬
[version 文字列1] [importing 真偽値]
use [変数名:]script 文字列2¬
[version 文字列1] [importing 真偽値]
use framework 文字列3
use scripting additions
文字列1 | 必要バージョン |
変数名 | 参照を保管するproperty |
様々な値 | アプリケーションの指定(tell準拠) |
文字列2 | ライブラリ名(拡張子を除くファイル名) |
真偽値 | 用語を読み込むか(デフォルト: true) |
文字列3 | フレームワーク名 |
scripting additions | scripting additionsという定数 |
スクリプトの冒頭で宣言し、そのスクリプトで利用する拡張要素を指定する。
parentとtellとusing terms fromさらにload script命令の機能がないまぜになったような機能。
参考 : AppleScript Language Guide: Control Statements Reference#use
指定したバージョンに満たない環境で実行されるとエラーが発生する。
バージョンを省略した場合、useが導入されたversion "2.3"とみなす。
それより前のバージョンだとuse文が存在しないので当然エラーとなり、バージョンチェックになる。
要するに製作したAppleScriptのバージョンを書いておくと、それより前の環境で停止するスクリプトになる。
指定したアプリケーションの用語がバックグラウンドになる。
現在のアプリケーション(current application)に用語がない場合に、用語が検索・実行されるアプリケーションを指定。
useを複数使い、複数のアプリケーションを指定できるが、どれがどのアプリケーションの用語かよくわからなくなるし、用語は衝突するし、あまりお勧めできない。
tellの代わりに使えるのではあるが、スクリプトエディタ上ではuseに書いたアプリケーションをtellタブで指定しないと動作確認ができない(おかしくなる)。
将来のバージョンのスクリプトエディタでは、きちんとuseで指定したアプリケーションに合わせた挙動をするようになるはず。
通常のアプリケーションは用語がぶつかって使いにくいが、System Eventsは
use application "System Events"
として使うと、tellより使いやすいかもしれない。
use Finder:application id "com.apple.finder"
の形で、一旦変数へ納めて
activate Finder
と使うやり方は、細かくアプリケーションを切り替える時に読みやすくできる。
importing false(without importing)を使うと用語を読み込まない。
そうすると意味がないように思えるが、versionと併用すると、AppliScriptと同様な、単にバージョンチェックを行う目的で使える。
スクリプトライブラリに置いたスクリプトを使用する。
スクリプトはスクリプトオブジェクトとして取り込まれるので、propertyの変更はライブラリにあるファイルには保存されない。
類似するload script命令があるが、useの方は(ファイルパスの設定が不要で)より簡便な方法といえる。
また、propertyを使ってもuseに近いことはできるが、あえて以下のように記述する必要はないだろう。
property ExternalUtility : script "external utility"
参考 : AppleScript Language Guide: Script Objects#Script Libraries
詳細は、スクリプトライブラリを参照。
他のuse文で何か指定すると、OSAXが使えなくなる。
そういう場合にOSAXを使いたい場合、これを記述する。
スクリプト全体ではなく、一部だけでOSAXの用語を使いたい場合はusing terms fromを使うと良い。
using terms from scripting additions
display dialog "hello world"
end using terms from
Appleの方針として、今後はあまりOSAXは使わせたくないようで、機能拡張する場合はライブラリを使っていくのが推奨されているようだ。
ObjectiveCなどのAPIを指定して利用できる。
frameworkは、変数やversionには対応していない。
use framework "Cocoa"
use AppleScript "3.0"
use ExternalUtility : script "external utility"