もぐてっく

人は1つ歳をとるたび、1ビットづつ大きくなれると信じてた。

Automatorでエラーメッセージを表示したい

Automator内に書いたシェルスクリプトでなんか都合の悪いことが起きた場合、戻り値を0以外にすることでワークフローをエラー終了させることが出来ます。

しかしながら、表示されるエラーメッセージはAutomator標準のもので、制作者がエラー要因をユーザに伝えることは出来ません。
(開発時ならstderrに要因を書いておけばエラー欄に出るんだけどね。)

f:id:moguno:20130120225951p:plain

それでは何とも使えないので、任意のエラーメッセージを出すアクションを書いてみました。

前のアクションの出力の1行目が***error***の場合、2行目以降をメッセージボックスに表示してエラー終了します。
そうじゃない場合は前のアクションの出力をそのまま次のアクションに渡します。

on run {input, parameters}
	
	if item 1 of input is equal to "***error***" then
		set message to ""
		set msglist to rest of input
		
		repeat with linex in msglist
			set message to message & linex & return
		end repeat
		
		display dialog message buttons {"OK"} with icon 0
		error
	else
		return input
	end if
end run

これでOK。

例えば、前のアクションがstdoutが

***error***
cueファイルをドロップしてください

だった場合、こんなメッセージボックスが出ます。

f:id:moguno:20130120225552p:plain

ばっちり。
(その後、前述のAutomatorのエラーが表示されるのが格好悪いですが・・・)

しっかし、Apple Scriptって文法が冗長であんま好きじゃないなぁ。