今日もAppleScriptを漢字Talk7.5(Basillisk II)の仮想環境でAppleScriptを試しています。
書籍の「第5章 作ってみようAppleScript」は「(Finderの)ゴミ箱を空にする」というスクリプトを基本から徐々に質を上げていく内容になっています。
普段、Finderで「ゴミ箱を空にする」という操作はFinderの画面でゴミ箱を選んで、(漢字Talk7.5では)「特別」メニューから「ゴミ箱を空にする」を選びます。
AppleScriptでこれを実現するわけですが、「スクリプト編集プログラム」の「記録」機能で操作をスクリプトにします。
(書式は、とりあえず日本語のままにしています。
因みに「日本語プログラミング言語」(linkはWikipedia)にも「AppleScript(Mac OS 8.5 より前)が載っています。
これを「スクリプト編集プログラム」の「編集」-「書式...」で英語のスクリプトに変更できます。
作業の結果は
となります。
「記録」機能を使えば操作手順をそのまま記録して、スクリプトを書けますが、機能追加などをするには「記録」機能だけでなく「用語集」を読んでスクリプトの追加をする必要も出てきます。「ゴミ箱を空にする」という操作はFinderの機能を操作することになるので、「Finder用語集」を開いて見ることになります( 「AppleScriptの種類と用語説明」参照 )。
例えば、「ゴミ箱を空にする」の操作の場合、「ファイル」-「用語説明を開く...」からFinderを選択し「Finder用語説明」を表示させて左側の一覧の中から「Finder用語集」の「空にする」を選ぶと説明が出てきます。この時「AppleScript書式」を「AppleScript日本語」にすると用語説明は日本語になりますが、「AppleScript英語」を選ぶと用語説明も英語に変わります。
(日本語の用語説明の例)
「ゴミ箱を空にする」というスクリプトを改良するには、「Finder用語集」から「ゴミ箱オブジェクト」の内容を確認する必要も出てきます。ここでは「属性」の「空にする時の警告」を読んでみます。これをスクリプトに追加するには「空にする時の警告を真にする」と書き加えます。ただし、この属性をそのまま利用すると、警告なしにゴミ箱が空になってしまいます。
通常のFinderの動作では空にして良いかどうかの確認ダイアログが出ます。
このダイアログを自分でスクリプトにするには、また「ファイル」-「用語説明を開く...」で用語説明を開くのですが、今度は「スクリプティング"機能追加"フォルダへ」を選択します。「スクリプティング"機能追加"フォルダ」は特定のアプリケーションに依存しないで使える命令について書いてあります。そこから「表示する」の機能説明を開いてみると、「ダイアログボックスを表示する」と書いてあります。この「表示する」というスクリプトを細かく書き加えて、自作のダイアログを作ることが出来ます。
ダイアログも「オブジェクト」の集まりのわけですが、「ウィンドウ」、「メッセージのテキスト」、[キャンセル]ボタン、[OK]ボタン、「アイコン」が集まったものと解釈できます。このうち「アイコン」は「表示する 用語説明」の名で「アイコン種別」で説明されていますが、「警告」、「中止」、「ノート」のアイコンは「システムアイコン」と呼ばれるそうでシステムに登録されています。
これらの前提をもとにスクリプトを書くと、
「"ゴミ箱に入っている項目を完全に消去してもよろしいですか?”をアイコン種別:警告で表示する」
となります。
実行すると、
と表示されます。
更に改良するため、ダイアログのボタンが押された時の処理を条件文を使って追加します。
「もし ("ゴミ箱に入っている項目を完全に消去してもよろしいですか?をアイコン種別:警告で表示する)の押されたボタン=="OK"ならば」
「そうでなければ」
を書き加えます。
更に[キャンセル]ボタンの「デフォルトの処理」がクリックされたらスクリプトの実行そのものをキャンセルする仕組みになっているそうで、ボタンがクリックされた時の処理を完全に自分で決めるためのスクリプトの修正をします。
「もし(”ゴミ箱に入っている項目を完全に消去してもよろしいですか?"をボタンリスト:{"はい","いいえ"},デフォルトボタン:"はい",アイコン種別:警告で表示する)の押されたボタン=="はい”ならば」
「そうでなければ」
と修正します。
これで大体完成ですが、
ファイルには(「情報を見る」でみると)「ロック」オプションがあります。これがチェックされているとゴミ箱に入っていても削除できません。
そこで、スクリプトを追加します。
「aFileを(ゴミ箱のウィンドウのすべての項目)のおのおのにして」
「もしaFileのロック状態=真ならば」
「aFileのロック状態を気にする」
「以上」
「以上」
と繰り返し文を使って書き加えます。
これで「ゴミ箱を空にする」スクリプトは完成になります。
ほぼ書籍の記述を読みながら、「スクリプト編集プログラム」で試したものです。
また、第5章では、ここで作ったスクリプトの保存についての説明があるのですが、「保存」を確認すると、
「アプリケーション」、「コンパイル済みスクリプト」、「テキスト」の3種類が選べることがわかります。
書籍によると
「アプリケーション」は、Finder上でダブルクリックして動かせる形式の保存になります。
「コンパイル済みスクリプト」AppleScript開発環境があれば、読み込んで実行できる形式です。
「テキスト」は日本語で表示されていれば、日本語環境がなければ動かすことができない形式です。
保存形式によっては保存する時にオプションが表示されますが、これについては省略します。
保存には「スクリプト編集プログラム」の「ファイル」メニューに「実行専用で保存...」という項目もありますが、この中には「アプリケーション」、「コンパイル済みスクリプト」が選択できます。ただどちらを選んでも「スクリプト編集プログラム」で開こうとしてもソースコードを見ることはできなくなります。
これで書籍「第5章作ってみようAppleScript」は終わりです。