コラム コラム:エラー処理について

本記事では、エラー処理について紹介させていただきます。
AutoMateでは、特に何も定めていない場合、アクションが実行エラーになるとそのままタスクが停止します。
よく発生するエラーとしては、以下のようなものが想定されます。
・参照しようとしたファイル/フォルダが存在しなかった
・操作対象のウィンドウが開いていなかった
・Webページにおいて、取得対象のデータが存在しなかった
※なお、ファイル/フォルダ/ウィンドウについては、Ifアクションで存在を確認する方法もございます。

そのような場合、タスクを実行エラーとしてそのまま停止するのではなく、存在しなかったことを記録しつつ後続の処理を実行したい場合もあるかと思います。
アクションが実行エラーになった場合にタスクを停止させずエラー処理を行いたい場合は、
以下のように処理を構築します。
組み込むことが可能な処理としては、
「再試行」「変数への値挿入」「エラーを無視」「特定のラベルに進む」「ループのブレイク」
などがあります。
------------------ここから------------------
1. 対象のアクションを編集し、「エラー時」タブをクリック
2. 対象アクションをリトライさせる場合、「ステップをリトライする」にチェックを入れ
再試行回数と再試行間隔を入力する(任意)
3. (再試行しても)エラーになった場合の処理を定義(任意)
例:変数「var_IsError」に「1」を入れる
4. エラーになったのち、どうするかを決める
(デフォルトは、タスクを停止する)
・次のステップに進む : タスクを停止せずそのまま次のアクションに移る
・ループをブレイクする: 最も内側のループをブレイクする
・ラベルに移動    : 指定された名前のラベルまで移動します
・ステップに移動   : 指定されたステップに移動します
(ただし、タスクが編集されて指定されたステップ番号の内容が変化しても移動するステップ番号は変化しないので注意)
------------------ここまで------------------

なお、タスクがエラーになった場合に現在開かれているExcelを保存して退避させたい、といった場合は
下記の記事を参考に「OnTaskFailure」をご使用ください。
https://automate.sct.co.jp/column/11735/

以下、サンプルです。上から順にブラウザのリンクに書かれているテキストを取得し表示する処理です。
指定されたリンクが無ければエラー処理を行い、変数に値をセットして処理を終了します。

<!--変数宣言-->
<AMVARIABLE NAME="var_LinkText" VALUE="" DESCRIPTION="リンクのテキスト" />
<AMVARIABLE NAME="var_LoopCnt" VALUE="" DESCRIPTION="ループのカウントを格納する変数" TYPE="number" />
<!--IEでAutoMateデモページを開く-->
<AMBROWSER URL="https://www-1.sct.co.jp/amdemo/index.html" SESSION="BrowserSession1" />
<!--Aタグを一つずつ取得する-->
<AMLOOP FROM="1" TO="65535" RESULTVARIABLE="var_LoopCnt" />
<!--エラーになった場合は、「該当データ無し」を「var_LinkText」にセットする-->
<AMBROWSER ACTIVITY="getvalue" AM_SETVAR="var_LinkText;該当データ無し" AM_ONERROR="CONTINUE" HTMLTAG="A" USEMATCH="%var_LoopCnt%" SESSION="BrowserSession1" RESULTVARIABLE="var_LinkText" ATTRIBUTE=":text" />
<AMSHOWDIALOG>%var_LinkText%</AMSHOWDIALOG>
<!--「該当データ無し」であれば処理終了-->
<AMIF EXPRESSION="%var_LinkText% = &quot;該当データ無し&quot;" />
<AMBREAK />
<AMIF ACTIVITY="end" />
<AMLOOP ACTIVITY="end" />
<AMBROWSER ACTIVITY="close" SESSION="BrowserSession1" />