02/28 tellブロックの書き方いろいろ
Mac OS X 10.5以降、tellブロックの書き方が拡張され、いろいろと柔軟性を持たせたAppleScriptを書けるようになりました。日常的には、Mac OS X 10.4で動かすケースを考えると積極的には採用してこなかったところですが、以下のように書けるようになっています。
| スクリプト名:tell block |
| –Mac OS X 10.5以降で可能なtell文の記述方法の一覧
tell application “Address Book” –通常パターン set mCard to my card set aP to properties of mCard end tell tell application id “com.apple.addressbook” –Bundle ID指定パターン set mCard to my card set aP to properties of mCard end tell tell application “/Applications/Address Book.app” –フルパス指定パターン set mCard to my card set aP to properties of mCard end tell |
Mac OS X標準搭載のアプリケーションが、バージョンアップ時に名称変更になることは、ごくまれにあります。身近な例では、Script EditorがAppleScript Editorに変更になったりしました。
この夏にやってくるOS X 10.8では、OS標準添付アプリもiOSに合わせて微妙に名称変更してくることが予想されます。すでにきな臭いところでは、iChatがMessagesに変わることは間違いありません。
これまでに作った(膨大な)AppleScriptを書き換える必要があるかといえば、アプリケーションのBundle IDが変わっていなければ大丈夫だろうかといったところ。System Eventsでプロセス一覧を取得して特定アプリケーションの起動をプロセス名称で確認する、とかいった処理「以外」はそれほど書き換える必要はないものと見ています。
ただ、冒頭で紹介したtellブロックのうち、フルパスを指定するタイプは書き換えが必要になります。そもそもファイル名が異なるので、書き換えなくてはなりません。
AppleScript EditorをAppleScriptからコントロールして、絶対パスでアプリケーションを指定している箇所があれば、自動で書き換える……といったことも、それほど難しくはないため作っておいてもよいでしょう。




