エラーダイアログを出す方法をご紹介します。
今回はスクリプトから出力されたメッセージで
エラーダイアログを出すか否かを判定するAppleScriptを書きました。
①シェルを実行させる
以下は特定のファイルをFAXするジョブがキューにあるかを調べて、
あればFAX完了とみなすスクリプトです。
#!/bin/bash
if [ $# -ne 1 ]
then
echo "引数は1つだけ指定してください。"
exit 1
fi
filename=$1
while [ -n "`lpq -a | grep $filename`" ]
do
# シェル起動時から300秒経過した場合はタイムアウト
if [ $SECONDS -ge 300 ]
then
echo "タイムアウトしました。"
exit 1
fi
sleep 5
done
echo "成功しました。"
exit 0
AppleScriptでシェルの結果を扱うために、
4・15・21行目で実行結果を標準出力に出力しています。
このシェルをAutomatorのシェルから呼び出します。
([ライブラリー] > [ユーティリティ]>[シェルスクリプトを実行])
シェル:/bin/bash
入力の引き渡し方法:stdin から
入力の引き渡し方法:stdin から
$HOME/Desktop/pollingJob.sh hoge.pdf
# 0以外を返すとAutomatorがエラーと判断して実行がSTOPします
exit 0
②AppleScriptでエラーメッセージを受け取る
以下は①で標準出力されたメッセージによって
エラーダイアログを表示するAppleScriptです。
( [ライブラリー]>[ユーティリティ]>[AppleScriptを実行])
on run {input, parameters}
set message to item 1 of input
if message is equal to "成功しました。" then
return input
end if
display dialog message buttons {"OK"} with icon 0
error message -- これがあるとAutomatorのログにmessageが表示される
end run
icon の後ろに指定する数値によって、ダイアログの種類が変わります。
0 => エラー
1 => 通常
2 => 警告
1 => 通常
2 => 警告