OSAX命令の1つであるdisplay dialog命令の実行結果の値はレコードとなります。
レコードは複数の属性を備えており、さまざまな値の入力に対応できます。OSAXはAppleScriptの機能を拡張するもので、display dialog
は、StandardAdditions.osaxに含まれます。
先ほどはtext returned
という属性を使いましたが、今度はクリックしたボタンを示す属性button returned
を使ってみましょう。
display dialog "どれがすき?" buttons {"Mac", "iPhone", "iPad"}
set theButton to button returned of result
if theButton = "Mac" then
display dialog "キーボードがないとね!"
else if theButton = "iPhone" then
display dialog "電話でないとね!"
else
display dialog "持つにも読むにもいい大きさ!"
end if
ここでは、theButton
という変数に結果を代入していますが、result
も使えます。
ただし、result
は汎用的な変数のため、常に値が変化します。
また、他の変数に比べてスクリプトの実行速度が遅くなります。
ですから極力result
ではなくtheButton
などの自作の変数を使った方がいいでしょう(注1)。
同じくOSAX命令のchoose file命令(注2)は、ファイル選択ダイアログを表示したあと、選択したファイルを結果に返します。
次のスクリプトは、選択したファイルの「制作日」を返します。
set theFile to choose file "どのファイルを調べますか?"
tell application "Finder"
set theDate to creation date of theFile
end tell
display dialog "制作日は" default answer theDate as string -- (注3)
このスクリプトでは、値を返すためにdisplay dialog
のdefault answer
オプションを利用しています。
また、OSAX命令のchoose folder命令は、選択ダイアログを表示して、選んだフォルダを結果に返します。
set theFolder to choose folder "どのフォルダを調べますか?"
tell application "Finder"
activate
set theName to (name of theFolder) as string
set the clipboard to theName
end tell
このスクリプトでは、OSAX命令のset the clipbord to命令を使って、値をクリップボードに代入しています。
結果は、[Command + V]キーでテキストエディタなどにペーストすることで確認できます。
ただし、直前でactivate
命令を実行しておかないとエラーが発生するため、tellブロックの間でset the clipboard to
命令を使う場合は注意しましょう。tellブロックに挟まれていない場所では、activate
命令を記述する必要はありません。
アプリケーションによっても異なりますが、クリップボードの値を扱いたい場合はOSAX命令を使う、と理解しておけばいいでしょう。