try …… 命令を記述 …… on error …… エラー処理 …… end try「try」以降の部分でエラーが起きると、AppleScriptは「on error」へとジャンプします。そしてそこに書かれているエラー処理のスクリプトを実行し、「end try」の続きへと進みます。
例えば、ダイアログ関係の命令があります。AppleScriptでは、ダイアログでキャンセルボタンを押すと、ユーザーによるキャンセルというエラーが発生したと認識され、スクリプトは中断してしまいます。これを防ぐのも、この構文を使います。
try display dialog "入力して!" default answer "" on error display dialog "キャンセルされました。" end tryこのようにすると、「入力して!」というダイアログでユーザーがキャンセルボタンを押すと、「キャンセルされました」と表示されます。
この「try」は、他に細かなパラメータを備えていますが、ちょっと難しいのでここでは割愛します。
スクリプト編集プログラムで作成できるAppletでは、保存の際のオプション「実行後、自動的に終了しない」を使うことで、起動しっぱなしのAppletが作れます。このAppletで利用できるのが「idle」ハンドラです。
これは、何のスクリプトも動作していないときに一定感覚で発生するハンドラです。
on idle …… 実行する命令 …… return《整数》 end idleこのような形をしています。最後の「return《整数》」というのは、次にidleイベントが発生し、このハンドラが呼び出される時間間隔を設定するものです。例えば「1を返す」とすれば、1秒後にアイドル状態ハンドラが呼び出されます。
idleハンドラの動きがわかるよう、簡単な実験をしてみましょう。
on idle beep return 10 end idleこれを自動的に終了しないアプリケーションとして保存し、実行してみて下さい。10秒ごとにビープ音がなりますよ。returnの数字をいろいろと変えて動作を調べると面白いでしょう。
もう少し、実用的なものとして、「開いているウィンドウをグリッド表示する」というスクリプトを考えてみましょう。
on idle tell application "Finder" set selLoc to insertion location if selLoc ュ desktop then try set posData to position of window of selLoc set item 1 of posData to (((item 1 of posData) + 5) div 10 * 10) set item 2 of posData to (((item 2 of posData) + 5) div 10 * 10) set position of window of selLoc to posData end try end if end tell return 1 end idleこれを実行後終了しないアプリケーションとして保存します。そして起動させたままにしておくと、選択したウィンドウの位置を10ドットごとにグリッド調整してくれます。
実際に使ってみると、return 1と指定してあっても、処理が実行されるまでに若干の時間がかかることがわかります。バックグラウンドでidleを使って動かすと、そうテキパキとした動作はされないのです。そのあたりの「動作ののんびり具合」をよく考えて使うようにするとよいでしょう。