フローを停止するアクションでフローが停止しない場合があるという話
はじめに
Power Automate for desktop の 「フローを停止する」 アクションは、その名前に反して、フローが停止しない 場合があります。本記事では、フローが停止しない場合の条件、及びフローが停止しない場合の回避策について説明します。
前提知識
- Power Automate for desktop についての基本的な知識
フローを停止するアクションでフローが停止しない場合の条件
「フローを停止する」アクションでフローが停止しない場合の条件は、次の通りです。両方の条件が満たされる場合、フローは停止しません。
- 「フローの終了」パラメーターを エラーメッセージの表示 に設定している
- フローが停止するアクションに対して有効な エラー処理 を行っている
「フローの終了」パラメーターをエラーメッセージの表示に設定
実は、「フローを停止する」アクションの「フローの終了」パラメーターを エラーメッセージの表示 に設定すると、このアクションはエラーを発生させます。(条件 1)
そして、「フローを停止する」アクションで発生したエラーに対してエラー処理を行っている場合は、そのエラー処理が動き出すので、フローは停止しません。(条件 2)
フローを停止するアクションでフローが停止しない場合の例
「フローを停止する」アクションでフローが停止しない例は、次のような場合です。
フロー全体
ブロックエラー発生時
フローを停止する
このフローを実行すると、次のような順番に処理を実行します。
- 1 行目:ブロックエラー発生時
- 2 行目:フローを停止する(ここでエラーが発生します)
- 1 行目:ブロックエラー発生時(「ブロックエラー発生時」アクションが「フローを停止する」アクションで発生したエラーをキャッチしました。フローが停止していません)
- 3 行目:End(「ブロックエラー発生時」アクションの例外処理モードをブロックの末尾に移動するに設定したので、ブロックの末尾に移動しました)
- 4 行目:最後のエラーを取得
他にも、
- 「ブロックエラー発生時」の新しいルールでサブフローの実行を定義している
- フロー実行を継続するではなく、スローエラーに設定しているが、このエラーをキャッチする親フローが存在する
場合に、フローは停止しません。
ちなみに、「最後のエラーを取得」アクションで取得したエラーを確認すると、「フローを停止する」アクションでエラーが発生していることが分かります。
最後のエラーを取得
フローを停止するアクションでフローが停止しない場合の回避策
「フローを停止する」アクションでフローが停止しない場合の条件を再掲します。
- フローの終了パラメーターを エラーメッセージの表示 に設定している
- フローが停止するアクションに対して エラー処理 を行っている
これらの条件のうち、少なくとも一方の条件が満たされなければフローは停止します。
1.はエラー状態で失敗させるために必須の設定なので、2.を回避する、すなわち「フローを停止する」アクションに対して、エラー処理を行わないことが有効な対策になると思います。
おわりに
本記事では、フローを停止するアクションでフローが停止しない場合について説明しました。フローを停止するという名前に反してフローが停止するしないことがあるのでご注意ください。
Discussion