Power Automate Desktopでエラー発生時の例外処理を実装する方法、ブロックエラーの使い方

error IT

Power Automate Desktopのアクション下部「エラー発生時」の設定についてです。読んで字のごとく、エラーが発生した時の処理をアクションごとに設定することができます。
本来の意図とは外れたケース、例外的な場面での処理なので、これを例外処理と呼びます。

スポンサーリンク

例外処理が起動しないエラー

「エラー発生時」には一部対応できないエラーがあります。
例①開いてもいないExcelを閉じようとしている場合、
これは指定したインスタンスが予め用意されていない、PADの構成に問題があるエラー(ランタイムエラー)となります。エラー内容で修正内容が指定されます。
この手のエラーの場合、エラー発生時の処理を設定しても何も起きません。
例②ファイル名のまちがったExcelファイルを開こうとしている場合、
インスタンス的には問題がない、PADの構成は間違っていないエラー(実行時エラー)となります。エラー内容はできなかったことが記述されます。
こうしたエラーでは、例外処理を走らせることが可能です。
例③間違ったURLでブラウザを立ち上げている場合のように、
意図しない内容にもかかわらず、PAD的には問題なく処理が走ることもあります。この手のエラーの場合も、例外処理の対象外となります。

エラー発生時

エラー発生時はアクション左下に設置されています。
クリックするとダイアログの表示内容が切り替わり、アクションが失敗した場合は次のルールが適用される旨説明書きが出ます。
画面下部パラメーターに戻るをクリックすれば、元の画面に戻ることができます。

エラーが発生した場合にアクションを再試行する

再試行はデフォルトでOFFになっており、エラーが発生しても再試行しない設定になっています。
ONにすると、回数間隔を設定することができます(図の場合、2秒開けて1度再試行)。

すべてのエラー

エラーの種類にかかわらず、ひっかかった時に行う処理をまとめて設定することができます。
エラーの種類ごとに処理を分ける場合は、後述する詳細を使用します。

デフォルトでスローエラーになっていますが、これはエラー発生時は処理を中断する設定です。
フロー実行を続行するをクリックすれば、
それ以外の選択肢をプルダウンから選ぶことができます。

次のアクションに移動

エラーが起きた処理は無視して、次のアクションへ進みます。

アクションの繰り返し

エラーが解消するまで再試行し続けます。解消されないエラーの場合無限ループになります(手動で止めることは可能)。

ラベルに移動

エラーが起きた時に、フロー内の指定箇所までジャンプすることができます。
「使用できるラベルがありません」と出る場合、フロー内にラベルがありません。
ラベルはアクションペインのフローコントロール内から追加できます。
名前(日本語不可)をつけて任意の箇所に挿入すれば、
エラーが起きた時には、指定したラベルの位置までジャンプする=やり直したり処理を飛ばしたりすることが可能となります。

新しいルール

新しいルールからは、変数の設定サブフローの実行が指定できます。
変数の設定では、「設定」に変数名を指定(デフォルトで新しい変数を作成)し、「宛先」でその内容を変更できます。
{x}を押すことで既定の変数を指定できます。
宛先は直接値を入力してもいいし、他の変数の値を使用することもできます。
設定と宛先というととまどいますが、用語としては変数の設定と同一なので、そっちに慣れてるとわかりやすいかもしれません。下の例②でも実際にエラー処理をやってみるので、そちら見ていただいても参考になるかと思います。
サブフローの実行を指定すると、エラー発生時に指定したサブフローを実行することができます。

すべてクリア

すべてクリアをクリックすることで、
「すべてのエラー」内の設定をすべて初期化する(スローエラーに戻す)ことができます。

詳細

エラーの内容に関わらず対応を設定できる「すべてのエラー」とは別に、詳細ではエラーの種別ごとにルールの作成が可能です。
「詳細」に表示される内容はアクションごとに異なります。
新しいルールをクリックし、サブフローの実行ないしは変数の設定をすることで、エラーごとに特殊な対応を設定することができます。
また、「詳細」の各項目名をクリックすることで、フロー実行を続行するを選択することも可能です。

エラー処理例①サブフローを起動

サブフローの作成

サブフローから新しいサブフローをクリックし、
エラー時に実行するサブフローを作成しておきます。
サブフローはメインフローの中で指定することで実行できる補助的なフローです。

エラー時にサブフローを起動

メインフローで何かエラーの起きる処理(ここでは存在しないExcelを開く)を作成し、エラー発生時をクリックします。
新しいルールで作成したサブフローを指定し、保存を押します。
これでエラー時にサブフローが実行されるようになります。

最後のエラーを取得

サブフローに、フローコントロールにある最後のエラーを取得を追加します。
「最後のエラーを取得」は文字通り、一番最後に発生したエラーの内容を取得できます。
保存をクリックします。

Excelに書き出し

Excelの起動書き込みをサブフローに追加し、取得した最後のエラーを書き込む値に指定します。
「最後のエラーを取得」では、エラーの具体的な内容をテキストとして取得できます。
メインフローを実行するとエラーが発生し、Excelにエラー内容が記述されます。

エラー処理例②エラー発生時のみ変数を渡す

今度はサブフローを使わずに、メインフロー内でふたつExcelを立ち上げます。
ひとつ目のExcelのエラー発生時に入り、
「すべてのエラー」でフロー実行を続行する次のアクションに移動を選択した状態にしておきます。

変数の設定

新しいルール変数の設定をクリックします。
「宛先」に直接文字列を記入すると、変数NewVarにそのまま代入されます。保存をクリックします。

エラー時のみ変数を出力

Excelへ書き込む内容を、先ほど作成した変数へ差し替えます。
変数の選択をクリックし、
変数名選択保存とクリックします。

実行

ひとつ目のExcelが問題なく開ける場合、変数NewVarには何も代入されないので、ふたつ目のExcelには何も書き込まれません。
しかしひとつ目のExcelが開けない(存在しない)場合は、
ふたつ目のExcelだけが開き、セルに変数に代入された値が書き込まれます。

なお、試した感じエラー発生時に作成した変数は、サブフローに渡すことができないようです。Excelに変数を書き込む処理をサブフローで行っても、セルに何も出力されなくなります。

ブロックエラー(ブロックごとにエラー処理)

処理が膨大になってくると、「ここからここまではこのエラー処理、その先はこのエラー処理」とブロックごとにエラー処理を振り分けたい場面も出てきます。
そうした時に使えるのがフローコントロールにあるブロックエラー発生時です。
名前はつけてもつけなくても良いです。
「エラー発生時」同様にエラー時の処理を指定することができます。
保存するとブロックの開始位置と終了位置が作成されるので、
処理をその中に配置してやると、中でエラーが発生した場合のみ「ブロックエラー発生時」の処理が実行されます。
Microsoft Power Automate Desktop(PAD)アクション、使い方一覧
Power Automate Desktopの使い方を機能・分類別に参照できるまとめです。

コメント

モバイルバージョンを終了