AppleScriptObC で書いた Automator の自作アクションでエラーを返すには、次のようにやればよいようです。
script ErrorTest
property parent : class "AMBundleAction"
property NSDictionary : class "NSDictionary"
on runWithInput_fromAction_error_(input, anAction, errorRef)
my fatalError(-1750, "your own error message", errorRef)
return missing value
end runWithInput_fromAction_error_
on fatalError(errorNum, msg, errorRef)
set objsArray to {errorNum, msg}
set keysArray to {current application's OSAScriptErrorNumberKey, current application's OSAScriptErrorMessageKey}
set contents of errorRef to NSDictionary's dictionaryWithObjects_forKeys_(objsArray, keysArray)
end fatalError
end script
errorRef は NSDictionary のポインタのポインタなので、contents of を使って、作ったオブジェクトを渡すところがキモです。
エラー番号 -1750 は MacError.h に errOSASystemError と宣言されていて、それを使うのがベストです。AppleScriptObjC の定数参照の要領で、current application's errOSASystemError とか書いてみたのですが、だめでした。MacError.h は CarbonCore のヘッダファイルなので、Carbon Framework をリンクしてみたのですが、やはりだめでした。
情報をお持ちの方がいらっしゃいましたら、コメントをください。
