BLOG
ブログ

【Power Automate for Desktop】エラーハンドリングのお話

2022年1月19日

皆さん、Power Automate for Desktop(以下PAD) 使っていますか?
最近弊社のお客様からもよくこのツールの名前を聞くことがあり、漠然と「認知度が凄くあがってきたな」と感じております。

そんなPADの機能の中でも「ブロックエラー」「エラーハンドリング」と呼ばれる ロボット内でエラーが発生した際に、例外として行う処理の話をしたいと思います。

目次

  • 1. エラーハンドリングって?
  • 2. エラーハンドリングの必要性
  • 3. エラーハンドリングの実例
  • 4. 2021年12月アップデートで進化したブロックエラー

1. エラーハンドリングって?

エラーハンドリングとは、ロボット内で処理を行う際に何らかの理由でエラーとなってしまった時に行ってくれるいわば、『例外処理』というものです。

例えば、Webを扱う処理でクリックがうまくできなかった場合や、取得するはずの情報がなかった場合、これは通常通りの道のりと違う処理のため、『例外』となります。

また、この『例外』はロボットに「こういう例外があるよ~」「この例外の場合はこういう処理をしてね~」と教え込ませることを『例外処理』といいます。 この例外処理を設けない場合は、ロボット君は「えっ、こんな処理知らないッスよ」と我々にエラーで通知し、そこで動きを止めてしまいます。

2. エラーハンドリングの必要性

エラーハンドリングの設定方法が様々ありますが、その目的はエラーが発生した場合にも正しく動作を終了させ、その内容を稼働者に通知させる。と言ったものです。 下のような画像の通知が出た時点でそれは異常終了となり、エラーハンドリングは正しく行えていません。

逆に、動作が不安定な処理に、あらかじめ『例外処理』と設定しておくことでエラーが発生した際には任意の方式でエラーメッセージを表示できます。

例:設定されたエラーメッセージ

ここまで読んだ方は、「エラーがちゃんと通知されるのであれば、わざわざハンドリングする必要はないんじゃない?」と思われるかもしれませんが、ロボットが途中で止まってしまうということは、作業途中のWindowや、システムがそのままになってしまう可能性があるということです。また、PADが通知するエラーは「アクティビティ名」と「アクティビティが設置されている場所」のみが通知されるため、どのデータでエラーとなってしまったかがわからず、更に動作ログが残らないため、詳細に処理を追うことができません。

ここまで聞くと、「なんとなくエラーハンドリングというものはしといたほうがいいんだね、ただ実際どうすればいいの?」と思われる方もいると思いますので次の項目で紹介いたします。

3. エラーハンドリングの実例

ブロックエラーの設定方法が簡単で、ただアクティビティを囲い、この中でエラーが発生した場合はどうするのかの設定をするだけです。

また、アクティビティ別にエラーハンドリングの設定を行うこともできますが この場合、力関係としては「アクティビティ別エラーハンドリング設定」>「ブロックエラーの設定」となり、アクティビティ別でエラーハンドリングが設定されている場合はブロックエラー側の設定が反映されません。

エラーハンドリングはその目的によって、様々な設定方法があります。

・ブロックの先頭に移動する

ブロックエラーを使用している中の処理でエラーが発生した場合は、処理がブロックの最初に戻り、再度同じことを行ってくれます。

この設定の注意点としては、最初から処理は行うものの、Windowやシステムの状態が進んでいて、扱うことができず、エラーとなってしまう場合がありますので、ブロックの最初に「エラーとして最初に戻った場合は、全てを初期化する」という処理を入れる必要性があります。

・ブロックの末尾に移動する

ブロック内でエラーが発生した場合にこの設定にすると、アクティビティが残っていたとしても、全て飛ばして、ブロックの最後まで処理が飛びます。

この設定の注意点は先ほどの最初から行う設定と同じように、状態が途中で終わってしまうため、ブロック後の処理に「エラーの場合は、全てを初期化する」などの処理を入れる必要があります。

・ラベルに移動

こちらは個人的に好きな設定です。

まず、前提として、「ラベル」というのは処理のセーブポイント、中間地点のようなものだと思っていただければイメージしやすいと思います。それをフローの中に仕込んでおいて、エラーが発生した場合に、そのラベルから処理を再開するようにできます。

これにより、途中からフローを開始することができるため、場合によっては初期化などをすることがなく、処理の再度実行ができます。

といった感じで、その目的によって様々な設定方法があるため、不安定な処理がある方はエラーハンドリングの設定を行い、安定したものに生まれ変わらせましょう!

4. 2021年12月アップデートで進化したブロックエラー

これまで、ブロックエラーと言っても、変数の計算エラーや、作成したリスト外のインデックスの指定をすると、エラーハンドリングは機能せず、エラー通知が出ていました。

2021年12月のアップデートにより、「予期しないロジックエラーを取得」という機能がブロックエラー発生時のアクティビティに追加され、上記のような場合でもエラーハンドリングが行えるようになりました。

以前より、不便だなと思っていた部分に痒い所に手が届くようなアップデートが度々入るため、今後のPADの発展に期待ですね。

弊社では、Power Automate for Desktop 並びに多種多様なRPAツールでの導入支援や、教育などを行っております。 どんな小さな疑問でも構いませんのでご連絡いただければ全力で対応いたしますので、ぜひご連絡くださいませ。