Automatorでエラーダイアログを出す | パークのソフトウエア開発者ブログ|ICT技術(Java・Android・iPhone・C・Ruby)なら株式会社パークにお任せください

パークのソフトウエア開発者ブログ|ICT技術(Java・Android・iPhone・C・Ruby)なら株式会社パークにお任せください

開発の解決方法や新しい手法の情報を、パークのエンジニアが提供します。パークのエンジニアが必要な場合は、ぜひお気軽にお問い合わせ下さい。 株式会社パーク:http://www.pa-rk.co.jp/

テーマ:
MacのGUI操作の自動再生アプリ「Automator」で、
エラーダイアログを出す方法をご紹介します。

今回はスクリプトから出力されたメッセージで
エラーダイアログを出すか否かを判定する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 から

$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 => 警告