はじめての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とFilemakerIllustratorを切り替えています。アプリケーション名はアプリケーションフォルダに入っているアプリケーションの名前をコピペで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

実行中のスクリプトを即終了させます。