こさい
こさい

こんにちは。完全自動化研究所の小佐井です。
Power Automate for desktopのエラー処理について考える第3回目です。

エラー処理は奥が深いのねー

めーたん
めーたん

前回の記事ではまとまったフローのエラー処理を行う方法について解説しました。

今回の記事では個別アクションのエラー処理を設定する方法について解説します。

図1を使って簡単に個別アクションのエラー処理の流れを説明します。

エラーが発生した場合(図1①)、エラー処理が行われエラー時のアクションが実行されます(図1②)。

ここから2つのパターンに分岐します。

1つはエラーをもう一度スローして(投げて)、異常終了するパターンです(図1③)。もう1つはフロー実行を続行するパターンです(図1④)。

フロー実行を続行した場合、[アクション3]が実行され、正常終了します。

【図1】個別アクションのエラーの流れ

ピンポイントでエラー処理を行うには

本記事で作成するフローの概要

本記事で作成するフローを簡単に把握しましょう(図2)。

テキストファイルを読み込んで、演算を行い、最後にメッセージボックスを表示するというフローは前記事で作成しました。

このフロー内でエラーが発生した場合は、エラーキャッチして、エラーメッセージを表示します。

本記事ではファイルを読み込む際にエラーが発生した場合(図2①)、変数の設定を行い(図2②)、ファイルを作成する(図2③)というエラー処理を追加します。

エラー処理後はエラーが発生した次のアクションに移動します(図2④)。

【図2】本記事で作成するフローの概要

作成準備

こさい
こさい

フローの概要が理解できたところで、フローの作成準備を始めてください。

STEP1 フロー[ブロックエラー処理]をコピーする

前記事「まとまったフローのエラー処理を行おう」で作成したフロー[ブロックエラー処理]をコピーして、フロー[個別エラー処理]を作成してください(図3)。

【図3】フロー[ブロックエラー処理]をコピーする

STEP2 フロー[個別エラー処理]をフローデザイナーで開く

STEP1で作成したフロー[個別エラー処理]をフローデザイナーで開いてください。

フロー[ブロックエラー処理]で作成したフローが表示されている状態になります(図4)。

【図4】フロー[個別エラー処理]をフローデザイナーで開く

STEP3 [エラーテスト.txt]を削除する

ドキュメントフォルダーを開いて、[エラーテスト.txt]を削除してください(図5)。

【図5】[エラーテスト.txt]を削除する

作成方法

めーたん
めーたん

準備完了!フロー作成しましょう!

1 エラー処理を行うサブフローの作成

STEP1 サブフロー[OpenFile_Catch]を追加する

コンソールの[新しいサブフロー]をクリックすると、[サブフローの追加]ダイアログが表示されるので、[サブフロー名]に「OpenFile_Catch」と入力して、[保存]をクリックしてください(図6)。

サブフロー[OpenFile_Catch]が追加されます。

【図6】サブフロー[OpenFile_Catch]の追加

STEP2 [コメント]アクションを追加する

アクションペインの[フローコントロール]グループをクリックし、[コメント]アクションをサブフロー[OpenFile_Catch]のワークスペースに追加してください(図7)。

【図7】[コメント]アクションの追加

[コメント]ダイアログが開くので、図8のようにコメントを入力し、[保存]をクリックしてください。

【図8】[コメント]アクションの設定

STEP3 [変数の設定]アクションを追加する

アクションペインの[変数]グループ内の[変数の設定]アクションを[コメント]アクションの後に追加してください(図9)。

【図9】[変数の設定]アクションの追加

[変数の設定]ダイアログが開くので、[変数]を[FileContents]に変更し、[値]に「1」と入力して、[保存]をクリックしてください(図10)。

【図10】[変数の設定]アクションの設定

STEP4 [テキストをファイルに書き込む]アクションを追加する

アクションペインの[ファイル]グループ内の[テキストをファイルに書き込む]アクションを[変数の設定]アクションの後に追加してください(図11)。

【図11】[テキストをファイルに書き込む]アクションの追加

[テキストをファイルに書き込む]ダイアログが開くので、[ファイルパス]に「%SpecialFolderPath%\エラーテスト.txt」と入力し、[書き込むテキスト]に「%FileContents%」と入力してください。変数は「{X}」を使うと入力間違いを防げます。

[エンコード]のドロップダウンリストから[システムの既定値]を選択して、[保存]をクリックしてください(図12)。

【図12】[テキストをファイルに書き込む]アクションの設定

サブフロー[OpenFile_Catch]が完成しました(図13)。

【図13】サブフロー[OpenFile_Catch]の完成

2 メインフローの作成

STEP1 メインフローを開く

メインフローを開いてください(図14)。

【図14】メインフローを開く

STEP2 [ファイルからテキストを読み取る]アクションを変更する

[ファイルからテキストを読み取る]アクションをダブルクリックしてください(図15)。

【図15】[ファイルからテキストを読み取る]アクションをダブルクリック

[ファイルからテキストを読み取る]ダイアログが開くので、[エラー発生時]をクリックしてください(図16)。

【図16】[エラー発生時]をクリック

エラー発生時の設定画面に遷移するので、[新しいルール]をクリックし、表示されたメニューから[サブフローの実行]を選択してください(図17)。

【図17】[サブフローの実行]を選択

[サブフローの実行]のドロップダウンリストから[OpenFile_Catch]を選択して、[保存]をクリックしてください(図18)。

【図18】[OpenFile_Catch]を選択して[保存]をクリック

[スローエラー]がデフォルトで選択されていますが、そのままでOKです。

STEP3 [ブロックエラー発生時]アクションの設定を変更する

[ブロックエラー発生時]アクションをダブルクリックしてください(図19)。

【図19】[ブロックエラー発生時]アクションをダブルクリック

[ブロックエラー発生時]ダイアログが開くので、[スローエラー]を選択し、[保存]をクリックしてください(図20)。

【図20】[ブロックエラー発生時]アクションの設定を変更

実行する

こさい
こさい

フローが完成したので、実行してエラー処理を体感しましょう!

1 フローを続けない場合(スローエラー)

フローデザイナーの上部にあるツールバー内の[実行]をクリックしてください。

[ファイルからテキストを読み取る]アクションでエラーが発生し、[OpenFile_Catch]サブフローに遷移し、[エラーテスト.txt]が作成されます。

その後、[Catch]サブフローに遷移し、[エラー発生]メッセージボックスが表示されます。

[OK]をクリックしてください(図21)。

【図21】フローの実行結果

ドキュメントフォルダー内に[エラーテスト.txt]が作成されていることを確認してください(図22)。

【図22】[エラーテスト.txt]が作成されている

めーたん
めーたん

[ファイルからテキストを読み取る]アクションのエラー処理が動作したってことね

2 フローを続ける場合(フロー実行を続行する)

次はフローの続行を試してみましょう。その前に以下のSTEPを実行してください。

STEP1 [エラーテスト.txt]を削除する

「作成準備」のSTEP3を参考にして、ドキュメントフォルダーの[エラーテスト.txt]を削除してください。

STEP2 [ファイルからテキストを読み取る]アクションを変更する

[ファイルからテキストを読み取る]アクションをダブルクリックしてください(図23)。

【図23】[ファイルからテキストを読み取る]アクションをダブルクリック

[ファイルからテキストを読み取る]ダイアログが開くので、[エラー発生時]をクリックしてください(図24)。

【図24】[エラー発生時]をクリック

[フロー実行を続行する]をクリックしてください。

[例外処理モード]のドロップダウンリストはデフォルトのまま[次のアクションに移動]とし、[保存]をクリックしてください(図25)。

【図25】[フロー実行を続行する]をクリックして[保存]をクリック

これでファイルの削除とフローの変更は終了です。

STEP3 フローを実行する

フローを実行してください。今度は「フローの実行に成功しました」というメッセージボックスが表示されます。[OK]をクリックしてください。フローが正常終了します(図26)。

【図26】フローの実行結果

めーたん
めーたん

個別アクションのエラー処理の後、フローを継続できたね

まとめ

個別アクションのエラーは、エラー発生時に汎用的ではないエラー処理を行いたい場合に設定します。

「実行する」の「2 フローを続ける場合(フロー実行を続行する)」のケースのように、エラーが発生してもフローの中で対応し、処理を続行するという場合に有効なテクニックです。

「実行する」の「1 フローを続けない場合(スローエラー)」はブロックエラーと個別アクションのエラーを組み合わせるパターンです。

ブロックエラー発生の汎用的なエラー処理だけでは対応できない処理を行いたいケースです。

Power Automate for desktopのエラー処理は、「まずはフロー全体のエラーをブロックエラーでCatchし、運用していく中で、もっと細かく対応したい場合は個別アクションのエラー処理を設定する」という方針で行うといいでしょう。

めーたん
めーたん

いろいろなエラー処理があったね

エラー処理はRPAの運用に不可欠な技術なので、いろいろ試して身に付けてください

こさい
こさい

関連する記事

エラー処理について、最初から学ぶには次の記事をお読みください。

Power Automate for desktopの書籍を出版しています。


さらにPower Automate for desktopに詳しくなるには

まとめてPower Automate for desktopの知識を身に付けたい方は、ぜひ書籍をお読みください。

人気記事ランキング(Power Automate for desktop)

1 2 3 4 5 6 7 8 9 10