Automation Anywhere(A360)をさわってみた!-エラーハンドラー編

RPA関連ブログ

本記事ではシステムエグゼで使用しているRPAツールAutomation Anywhere(以下、AA)のさまざまな機能についてご紹介します。

今回はエラー原因を特定するために使用する、A360のエラーハンドラーアクションについて紹介します。

1.ロボットのエラー

ロボットを動かした時、異常な条件や例外が発生するとロボットは正常に実行されず、タスクを完了せずに終了してしまいます。
今回は試しにわざとエラーを起こすロボットを作成しました。

ロボットの処理は、以下の通りです。
①対象ファイルを開く
②画面上に「終了」のメッセージボックスを表示させる
開く対象のファイル名が「RPAest.xlsx」と指定されていますが、該当のファイルが存在しないため、エラーを吐き出す仕組みとなっています。

実行してみると、「終了」のメッセージボックスは表示されず、以下のエラー画面が表示されます。

この画面からでもエラーの内容を把握できますが、エラーが起きるかどうか、ロボットの稼働中、ロボットの画面を見続けるわけにはいきません。
エラーハンドラーアクションを利用して、エラーハンドリングしましょう。

2.エラーハンドラーアクション

まずは、AAのエラーハンドラーアクションについて紹介します。
エラーハンドラーには、以下4つのアクションがあります。

アクション名 アイコン
試行
キャッチ
最終
スロー

試行

「試行」では以下画面が表示されます。

「試行」では設定する項目はありませんが、以下のように「試行」内に組まれているアクションでエラーが発生した場合に、例外処理を行うようになります。

キャッチ

例外処理をするには、「キャッチ」のアクションを入れます。

「キャッチ」では以下画面が表示されます。

それぞれの指定項目では以下の内容を指定します。

指定項目 機能 備考
例外 対象のエラーハンドラーを選択
エラー発生時に
次のアクションを続行
「キャッチ」内でエラーが発生した場合に、エラーとして扱うかを選択
例外メッセージを代入 エラーメッセージを任意の変数に代入する 任意
行番号を次に代入 エラー行番号を任意の変数に代入する 任意

「キャッチ」内でエラーが発生した場合、デフォルト設定のままだと「1.ロボットのエラー」で紹介した状態のように、例外処理を完了しないで終了してしまいます。
しかし、「エラー発生時に次のアクションを続行」のチェックボックスにチェックを入れると、「キャッチ」内で発生したエラーをエラーとして扱わずに、例外処理を進めてくれます。

最終

「最終」では以下画面が表示されます。

「最終」では例外が発生したかどうかにかかわらず、「試行」と「キャッチ」の後にアクションを実行できます。
ログを取得するアクションを入れるなどして活用します。

スロー

「スロー」では以下画面が表示されます。

それぞれの指定項目では以下内容を指定します。

指定項目 機能 備考
例外メッセージを入力してください 例外メッセージを任意で入力する 任意
例外 対象のエラーハンドラーを選択

「スロー」は、自分でエラー条件を作成したいときに使用します。
例えば、Webサイトからダウンロードした請求書の金額と、別で集計した金額マスタの合計金額を照らし合わせる処理があった場合に、金額が一致していない場合は、「スロー」を使って例外処理を行うといったエラーハンドリングが可能です。
スローで設定した例外メッセージをエラーメッセージとして使用することができます。

以上がエラーハンドラーパッケージで利用できるアクションです。

3.AAのエラーハンドリング方法

では、どのようなエラーハンドリングがあるかを紹介していきます。
今回は以下の3つを紹介します。

  • デスクトップのキャプチャ
  • メール送信
  • 開いたWebサイト/システムを閉じる

デスクトップのキャプチャ

デスクトップをキャプチャするには、スクリーンパッケージの「デスクトップをキャプチャ」アクションを使用します。
このアクションでできるエラーハンドリングは、「エラー画面のキャプチャ」です。
「デスクトップをキャプチャ」では以下の画面が表示されます。

それぞれの指定項目では以下の内容を指定します。

指定項目 機能
画像を保存するファイルパス キャプチャ画像の保存先を入力する

エラー画面をキャプチャすることで、どのタイミングでエラーが起きたのかを画像から判別できるようにします。

メール送信

メール送信はEメールパッケージの「メール送信」アクションの使用、またはレコーダーパッケージ等を使用してメール画面を操作します。
このアクションでできるエラーハンドリングは、「エラー内容の送信」です。
Eメールの操作については以下リンクのブログを参照してください。

Automation Anywhere(A360)をさわってみた!-Eメール編

メールの本文内に、「キャッチ」内で取得したエラーメッセージとエラー行番号の変数を指定します。

実際に本文内に変数を指定すると以下のように送信されます。

エラーメールを送信することで、エラーの検知やエラー箇所の特定ができるようになります。

開いたWebサイト/システムを閉じる

この処理では、まず、ifパッケージの「if」アクションを使用し、Webサイトやシステムが開かれているかの判断をします。
そして、ウィンドウパッケージの「閉じる」アクションや、Excel(基本/高度/365)の「閉じる」アクションを使用して閉じます。
このアクションでできるエラーハンドリングは、「開いているWebサイトやシステムがある場合に、閉じる」です。
処理は以下のように指定します。

エラー後に画面を閉じずに別のRPAを動かしたり、同じRPAを再度実行したりすると、画面の誤認識等、後続の処理に影響が出る恐れがあります。
エラーハンドリングをして、開いた画面は閉じるようにしましょう。

4.エラー処理を実装してみよう!

では、前章で紹介したエラーハンドリングを実際に実装してみましょう。
今回は、「Automation Anywhere(A360)でロボットを作ってみよう!-Excelの高度な操作でできること②」で作成したロボットを使用します。
このロボットに先ほど紹介したエラーハンドリングに加え、エラーのログも出力されるように実装します。
処理は以下です。

今回はこのロボットを実行し、以下の3つの結果を確認してみましょう。
実行された場合に得られるものは以下です。

結果 成果物
実行結果(成功) 終了メール、PDFファイル
実行結果(キャッチ) エラーメール
実行結果(スロー) エラーメール、PDFファイル

5.ロボットを動かしてみた結果

では、実際にロボットを動かしてみましょう。
※実行方法については、過去ブログ「Automation Anywhere(A360)をさわってみた!-レコーダー編」に概要を記載してありますので、そちらもご覧ください。

実行結果(成功)

まず、正常終了した結果は以下です。

実行結果(キャッチ)

次に、配置されているべきファイルがない状態を作り、例外処理を実行させた結果は以下です。

実行結果(スロー)

最後に、同一日付のPDFファイルがある場合に、エラースローで例外処理を実行させた結果は以下です。

6.おわりに

ご紹介したように、エラーハンドラーパッケージを利用することでエラーをハンドリングし、エラーの原因をタイムリーに特定できます。
また、エラー分岐条件や、エラー発生時に行いたい処理を業務に合わせて実装することも可能です。
エラーハンドラーパッケージを活用して、RPA運用に役立てましょう。

RPA(Automation Anywhere)の導入をご検討の際は、システムエグゼまでお気軽にご相談ください。