Mac OS X 10.6、Snow Leopard になったので、AppleScript をおさらいしてみます。
AppleScript エディタの操作性が良くなっていて、少し楽になりましたね。
ダイアローグ表示
シンプルにメッセージを表示します。
![](https://blogimg.goo.ne.jp/user_image/17/49/f3459a16a78c8f36a722fcf664799f82.jpg)
![](https://blogimg.goo.ne.jp/user_image/0f/ae/ddde98c024afc7430b4ea56674926ab7.jpg)
『buttons』オプションを使うと、メッセージに対し、ユーザーが選択できるボタンを表示します。
![](https://blogimg.goo.ne.jp/user_image/6c/00/6a5af8173c41e93d67f59de6631e3e34.jpg)
![](https://blogimg.goo.ne.jp/user_image/03/7a/90d9a5a18d23b7147804cf6f8e756cf4.jpg)
『default button』オプションを使うと、『buttons』オプションで設定したボタンにデフォルトの選択を設定します。
![](https://blogimg.goo.ne.jp/user_image/1c/4a/84c45474423af79f79c0c7647809c7d5.jpg)
![](https://blogimg.goo.ne.jp/user_image/03/7a/90d9a5a18d23b7147804cf6f8e756cf4.jpg)
上の画像では分かりませんが、『101』が青色に反転してデフォルト表示されます。
リターンキーを押すと、『101』をクリックするのと同じ結果になります。
『with icon』オプションで、ダイアローグ内の左にアイコンを表示します。
![](https://blogimg.goo.ne.jp/user_image/47/97/708f1cd181c0e367c0966af9eff5fcae.jpg)
![](https://blogimg.goo.ne.jp/user_image/6e/a6/ff57eaee5ca25af66fa5c5a8d401fd9a.jpg)
『giving up after』オプションで、ダイアローグを表示し、指定した秒数内に反応がないとダイアローグを閉じます。
![](https://blogimg.goo.ne.jp/user_image/07/c5/c0c883f498703e2764627ab0cd922534.jpg)
ユーザー反応(返り値)の取得
直前の結果が反映される『result』変数を使うことで、返り値を取得します。
![](https://blogimg.goo.ne.jp/user_image/59/98/b560fc02aff5fd7ba37c226ce397b221.jpg)
上の例では直前の操作結果(『101』をクリックした)が『{button returned:"101", gave up:false}』というリスト形式で、tmp という変数に格納されます。
どのボタンがクリックされたかという結果を取得するには、戻り値のリストから『button returned』というリスト項目を取り出します。(リストからリスト項目の値を取り出すのは、リスト項目名 of リスト)
![](https://blogimg.goo.ne.jp/user_image/5c/5d/b159bb5a6005cf72a5da3a2a2f59b977.jpg)
上の例では tmp に格納されている『{button returned:"102", gave up:false}』から 『102』という値を取り出しています。
その結果は変数 btn に格納。
『giving up after』オプションが機能したかどうか(つまり、ユーザーがボタンをクリックしなかったかどうか)は、 tmp に格納されている結果リストから『gave up』というリスト項目の値(下の例では『false』)を取り出します。
その結果は変数 gu に格納。
![](https://blogimg.goo.ne.jp/user_image/48/2a/0ef8d1440dae8546b2cdab3b6eb605f6.jpg)
ユーザーへの確認のため、取り出した結果を表示させます。(テキスト同士をつなぐには『&』を使います。ここでは、『ボタン :』というテキストと、tmp に格納されている『102』というテキストを『&』でつなぎました)
![](https://blogimg.goo.ne.jp/user_image/0c/11/54cc969b29e9f2acc84a01f2c01c0f80.jpg)
![](https://blogimg.goo.ne.jp/user_image/17/da/1fc9804f156282e7266bed0292048579.jpg)
位置合わせの整形には、tab を使います。
![](https://blogimg.goo.ne.jp/user_image/24/68/178750cbf2586e12de951eb1bda22b2d.jpg)
![](https://blogimg.goo.ne.jp/user_image/28/6d/c16663bd8a1e762d9435a5455266f56f.jpg)
ユーザーがボタンを押しただどうかの反応を、同様に表示します。
![](https://blogimg.goo.ne.jp/user_image/48/fd/e3bc790b0df07a1ef1654bfc13f1f4e8.jpg)
![](https://blogimg.goo.ne.jp/user_image/23/6d/39026e791db2efc5f8e3ae0c9cfbc0d2.jpg)
2つの結果をまとめて表示しましょう。
『return』を使えば、改行できます。(& return &)
![](https://blogimg.goo.ne.jp/user_image/5f/0c/070f06b8fb418b038a5f81def7845dce.jpg)
![](https://blogimg.goo.ne.jp/user_image/0b/61/497483594b48ac54966581aef886c005.jpg)
ところで、display dialog で表示するメッセージテキストを変数で持っておくことができます。
![](https://blogimg.goo.ne.jp/user_image/30/2e/bc662802f22d4716f661721a08882852.jpg)
ボタンもリスト形式で変数で持っておけます。
![](https://blogimg.goo.ne.jp/user_image/41/72/8c2889e1c632c22fe85b1023a929433a.jpg)
最終のソース:
MacScripter の投稿(MacScripter / Icons in "display dialog"....) を参考にして、『with icon』オプションで表示するアイコンを好みのものに設定できます。
汎用的にスクリプトが動くようにするには、標準の場所にあるものがいいですね。
ここでは、AppleScript エディタのパッケージ内(つまり、AppleScript エディタに含まれている)アイコンを使ってみます。
AppleScript エディタを右クリックして『パッケージの内容を表示』します。
![](https://blogimg.goo.ne.jp/user_image/38/61/286c39ea37756499254e378eff023204.jpg)
『SEPlugin.icns』というのを使ってみます。
![](https://blogimg.goo.ne.jp/user_image/6c/42/a925af96364c9049dd06ff694fce0569.jpg)
表示されました。
![](https://blogimg.goo.ne.jp/user_image/08/83/cdccadc24bfeedb6c672ccb5e11bcf6c.jpg)
ソース:
AppleScript 2.1 Help: display dialog
AppleScript 0005 - Display dialog ボタンの結果の取得 - GameSprit
AppleScript エディタの操作性が良くなっていて、少し楽になりましたね。
ダイアローグ表示
シンプルにメッセージを表示します。
![](https://blogimg.goo.ne.jp/user_image/17/49/f3459a16a78c8f36a722fcf664799f82.jpg)
![](https://blogimg.goo.ne.jp/user_image/0f/ae/ddde98c024afc7430b4ea56674926ab7.jpg)
『buttons』オプションを使うと、メッセージに対し、ユーザーが選択できるボタンを表示します。
![](https://blogimg.goo.ne.jp/user_image/6c/00/6a5af8173c41e93d67f59de6631e3e34.jpg)
![](https://blogimg.goo.ne.jp/user_image/03/7a/90d9a5a18d23b7147804cf6f8e756cf4.jpg)
『default button』オプションを使うと、『buttons』オプションで設定したボタンにデフォルトの選択を設定します。
![](https://blogimg.goo.ne.jp/user_image/1c/4a/84c45474423af79f79c0c7647809c7d5.jpg)
![](https://blogimg.goo.ne.jp/user_image/03/7a/90d9a5a18d23b7147804cf6f8e756cf4.jpg)
上の画像では分かりませんが、『101』が青色に反転してデフォルト表示されます。
リターンキーを押すと、『101』をクリックするのと同じ結果になります。
『with icon』オプションで、ダイアローグ内の左にアイコンを表示します。
![](https://blogimg.goo.ne.jp/user_image/47/97/708f1cd181c0e367c0966af9eff5fcae.jpg)
![](https://blogimg.goo.ne.jp/user_image/6e/a6/ff57eaee5ca25af66fa5c5a8d401fd9a.jpg)
『giving up after』オプションで、ダイアローグを表示し、指定した秒数内に反応がないとダイアローグを閉じます。
![](https://blogimg.goo.ne.jp/user_image/07/c5/c0c883f498703e2764627ab0cd922534.jpg)
ユーザー反応(返り値)の取得
直前の結果が反映される『result』変数を使うことで、返り値を取得します。
![](https://blogimg.goo.ne.jp/user_image/59/98/b560fc02aff5fd7ba37c226ce397b221.jpg)
上の例では直前の操作結果(『101』をクリックした)が『{button returned:"101", gave up:false}』というリスト形式で、tmp という変数に格納されます。
どのボタンがクリックされたかという結果を取得するには、戻り値のリストから『button returned』というリスト項目を取り出します。(リストからリスト項目の値を取り出すのは、リスト項目名 of リスト)
![](https://blogimg.goo.ne.jp/user_image/5c/5d/b159bb5a6005cf72a5da3a2a2f59b977.jpg)
上の例では tmp に格納されている『{button returned:"102", gave up:false}』から 『102』という値を取り出しています。
その結果は変数 btn に格納。
『giving up after』オプションが機能したかどうか(つまり、ユーザーがボタンをクリックしなかったかどうか)は、 tmp に格納されている結果リストから『gave up』というリスト項目の値(下の例では『false』)を取り出します。
その結果は変数 gu に格納。
![](https://blogimg.goo.ne.jp/user_image/48/2a/0ef8d1440dae8546b2cdab3b6eb605f6.jpg)
ユーザーへの確認のため、取り出した結果を表示させます。(テキスト同士をつなぐには『&』を使います。ここでは、『ボタン :』というテキストと、tmp に格納されている『102』というテキストを『&』でつなぎました)
![](https://blogimg.goo.ne.jp/user_image/0c/11/54cc969b29e9f2acc84a01f2c01c0f80.jpg)
![](https://blogimg.goo.ne.jp/user_image/17/da/1fc9804f156282e7266bed0292048579.jpg)
位置合わせの整形には、tab を使います。
![](https://blogimg.goo.ne.jp/user_image/24/68/178750cbf2586e12de951eb1bda22b2d.jpg)
![](https://blogimg.goo.ne.jp/user_image/28/6d/c16663bd8a1e762d9435a5455266f56f.jpg)
ユーザーがボタンを押しただどうかの反応を、同様に表示します。
![](https://blogimg.goo.ne.jp/user_image/48/fd/e3bc790b0df07a1ef1654bfc13f1f4e8.jpg)
![](https://blogimg.goo.ne.jp/user_image/23/6d/39026e791db2efc5f8e3ae0c9cfbc0d2.jpg)
2つの結果をまとめて表示しましょう。
『return』を使えば、改行できます。(& return &)
![](https://blogimg.goo.ne.jp/user_image/5f/0c/070f06b8fb418b038a5f81def7845dce.jpg)
![](https://blogimg.goo.ne.jp/user_image/0b/61/497483594b48ac54966581aef886c005.jpg)
ところで、display dialog で表示するメッセージテキストを変数で持っておくことができます。
![](https://blogimg.goo.ne.jp/user_image/30/2e/bc662802f22d4716f661721a08882852.jpg)
ボタンもリスト形式で変数で持っておけます。
![](https://blogimg.goo.ne.jp/user_image/41/72/8c2889e1c632c22fe85b1023a929433a.jpg)
最終のソース:
set ddmsg to "表示するテキスト"
set btnList to {"101", "102", "103"}
display dialog ddmsg buttons btnList default button 1 with icon 2 giving up after 2
set tmp to result
set btn to button returned of tmp
set gu to gave up of tmp
display dialog "ボタン :" & tab & btn & return & "入力反応:" & tab & gu
MacScripter の投稿(MacScripter / Icons in "display dialog"....) を参考にして、『with icon』オプションで表示するアイコンを好みのものに設定できます。
汎用的にスクリプトが動くようにするには、標準の場所にあるものがいいですね。
ここでは、AppleScript エディタのパッケージ内(つまり、AppleScript エディタに含まれている)アイコンを使ってみます。
AppleScript エディタを右クリックして『パッケージの内容を表示』します。
![](https://blogimg.goo.ne.jp/user_image/38/61/286c39ea37756499254e378eff023204.jpg)
『SEPlugin.icns』というのを使ってみます。
![](https://blogimg.goo.ne.jp/user_image/6c/42/a925af96364c9049dd06ff694fce0569.jpg)
表示されました。
![](https://blogimg.goo.ne.jp/user_image/08/83/cdccadc24bfeedb6c672ccb5e11bcf6c.jpg)
ソース:
display dialog "OK ?" with icon alias ((path to me) & "Contents:Resources:SEPlugin.icns" as string) buttons {"Cancel", "OK"} default button 2
AppleScript 2.1 Help: display dialog
AppleScript 0005 - Display dialog ボタンの結果の取得 - GameSprit