2013/03/28

AppleScriptでGrowlを使うメモ

OSのアップデートごとに存在感が薄くなってるAppleScriptだが、ワタシは昔からiTunes用の一括処理スクリプトを途中で手を加えながら使用していて、終了時にシステム警告音が鳴るように仕込んでいた。
tell application "Finder"
beep
end tell
しかし他の操作中だと紛らわしいので、例えばiTunesの操作完了時のチャイムが鳴らせないかと考えMountain Lionの新機能である通知センターなどを触ってみたがうまくいかず、試行錯誤して辿り着いたのが、Mountain Lion以前の定番デスクトップ通知アプリケーションで昔から愛用していたGrowl。調べてみるとAppleScriptからGrowlに通知を送れることが分かったので、スクリプト内に仕込んでみた。

方法は簡単で、まずAppleScriptエディタを開き上記のブログの通りのスクリプトを実行してGrowlに登録する。ワタシはこんな書式でやってみた。
tell application "GrowlHelperApp"
register as application "Growl AppleScript" ¬
all notifications {"iTunes script"} ¬
default notifications {"iTunes script"} ¬
icon of application "Script Editor"
end tell
resister以降、 end tell直前までは本来は続けて書くらしく、 ¬ マークは削除しない(改行したいときはoption+Returnを入力)。applicationはGrowlへの登録アプリケーション名、notificationsは通知の名前(コンマ区切りで複数指定可)、default applicationやicon of applicationは読んで字のごとくだが不要かもしれない。

次に、Growlへ通知を送りたいスクリプトを開き、処理の最後に以下を付け加えて保存する。
tell application "Growl"
notify with name "iTunes script"¬
title "iTunes"¬
description "処理を完了しました"¬
application name "Growl AppleScript"¬
icon of application "iTunes"
end tell
最初のスクリプトと対比すれば説明は不要だと思う。一応書いておくと、notify with nameにはall notificationsで設定した通知の名を指定、titleとdescriptionはGlowlで表示されるタイトルと内容、application nameは最初のスクリプトで登録したアプリケーション名、iconはいろいろ選べるのでiTunesを指定した。

次に、iTunesのリソース内部にあるサウンドファイルを引っこ抜く。サウンドファイルはiTunesアプリケーションのアイコンを右クリックして「パッケージの内容を表示」からContents>Resourcesフォルダを辿ると見つかる「complete.aif」で、これを個人フォルダ内のLibrary>Soundsへコピーする(OSのバージョンによってLibraryが見えない場合があるので注意)。

最後はGrowlの環境設定。表示項目でSoundActionで任意のサウンドを鳴らすことができるので、「complete」を選ぶ。そしてアプリケーション項目で「Growl AppleScript」をクリックし、「iTunes script」のActions:にSound Actionのチェックを入れる。

以上で完了。音だけではなく通知も出せるようになったので、何かと応用が利きそうな気がする。Mountain Lionの通知センターがもう少しカスタマイズできると楽なんだけどねえ。