はじめてのAppleScript
DTPに関わって○○年なのにDTPでは一度もAppleScript書いてなかった。いわゆる食わず嫌いです(笑)。という事で、業務をシンプルにする為にはじめてAppleScriptを書いてみた。内容はMacintosh HDの中に入っているfoobar.epsファイルをデスクトップにコピーして、コピーしたファイルをイラレで開くという簡単なスクリプトです。
tell application "Finder"
set fn to "foobar.eps"
set tgtFile to "Macintosh HD:" & fn
if exists tgtFile then
try
duplicate tgtFile to desktop
on error errMsg
tell application "FileMaker Pro"
activate
display dialog "失敗しました。" & errMsg buttons {"OK"} default button 1
return
end tell
end try
set fn to (desktop as string) & fn
tell application "Adobe Illustrator 9.0.2"
activate
open file fn
display dialog "デスクトップにコピーしたファイルを開きました。" buttons {"OK"}
end tell
else
display dialog "コピー元ファイルがないよ!" buttons {"OK"} default button 1
end if
end tell
tell application "アプリケーション名"
初めてAppleScriptを見たときに目に飛び込んでくるのはこのtell applicationですよね?これはアプリケーションの切り替えと思えば良いですね。Command+Tabをしてる様な感じでしょうか。これは必要に応じて入れ子にすることができます。サンプルのスクリプトではFinderとFilemakerとIllustratorを切り替えています。アプリケーション名はアプリケーションフォルダに入っているアプリケーションの名前をコピペでOKです(だよね?汗)。
set fn to "foobar.eps"
変数の設定です。fnという変数にfoobar.epsという文字列をセットしています。取り出し方は変数名だけで取り出せます。(例:set tgtFile to "Macintosh HD:" & fn)
if exists tgtFile then
ここではファイルの有無を調べています。existsがそうです。exists ファイルパスで調べられます。
try〜on error〜end try 例外処理
try〜on errorの間でエラーが起きそうな処理を書き、on error〜end tryの間でエラーが起きた時の処理を書きます。どんなエラーなのか知りたい時は、on errorの後に変数名を書いておけば取り出すことが出来ます。また、エラーが起きたときにエラーの内容で処理を場合分けしたい場合は、on error line numと書いておけばnumにエラー番号は入りますので、if文で場合分けするといいと思います。
duplicate tgtFile to desktop
ファイルの複製です。前もってtgtFile変数にファイルのパスを設定してあります。それをデスクトップにコピーしています。desktopはFinderを使用中の場合、デスクトップのオブジェクトが入っていますが、他のアプリではただの文字列となってしまうので、注意です。
activate
tell中のアプリケーションを前面に表示します。
display dialog
ダイアログを表示します。シンプルに書くと display dialog "メッセージ" となりますが、このままだとOKとキャンセルボタンがデフォルトで出ますので、サンプルはbuttons{"OK"}としてボタンをOKのみにしています。さらにエンターキーでダイアログを閉じる為にdefault button 1としてOKボタンを選択済みにしています。
return
実行中のスクリプトを即終了させます。