[Automator & AppleScript] Automator: サブルーチン(ハンドラ)を使う

うまく動かないなと思っていたら、間違っていました。

ちょっとはまった。

ハンドラを作成する

errAlert というサブルーチンを作ってみます。

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 のくくり方を間違えていました。

  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

正しくは

  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