[Automator & AppleScript] Automator: サブルーチン(ハンドラ)を使う
うまく動かないなと思っていたら、間違っていました。
[markdown]
ちょっとはまった。
> * [life log: AppleScript 最速基本文法マスター](http://mc909j.blogspot.jp/2013/03/applescript.html)
> * [Basic/ハンドラ/on](http://tonbi.jp/AppleScript/Dictionary/Basic/Handler/commandHandler.html)
## ハンドラを作成する
`errAlert` というサブルーチンを作ってみます。
“`prettyprinted
on run {input}
:
end run
on errAlert(alertMsg, alertNo)
— キャンセルされた場合は、そのままアプリを終了する
if alertNo is -128 then
tell me to quit
— それ以外のエラーはダイアログを表示して終了する
else
:
end if
end errAlert
“`
## ハンドラを利用する
`tell application` のくくり方を間違えていました。
“`prettyprinted
tell application “Finder”
try
if exists destFolder then
— 作業フォルダが存在する場合、内部のファイルを削除する
delete (every item of folder destFolder)
else
make new folder at desktopPath with properties {name:defaultFolder}
end if
— srcFolder 内部のファイルを複製する
duplicate items of folder (srcFolder) to destFolder
on error errMsg number errno
errAlert(errMsg, errno)
end try
end tell
“`
正しくは
“`prettyprinted
try
tell application “Finder”
if exists destFolder then
— 作業フォルダが存在する場合、内部のファイルを削除する
delete (every item of folder destFolder)
else
make new folder at desktopPath with properties {name:defaultFolder}
end if
— srcFolder 内部のファイルを複製する
duplicate items of folder (srcFolder) to destFolder
end tell
on error errMsg number errno
errAlert(errMsg, errno)
end try
“`
[/markdown]