🚧

フローを停止するアクションでフローが停止しない場合があるという話

に公開

はじめに

Power Automate for desktop の 「フローを停止する」 アクションは、その名前に反して、フローが停止しない 場合があります。本記事では、フローが停止しない場合の条件、及びフローが停止しない場合の回避策について説明します。

前提知識

  • Power Automate for desktop についての基本的な知識

フローを停止するアクションでフローが停止しない場合の条件

「フローを停止する」アクションでフローが停止しない場合の条件は、次の通りです。両方の条件が満たされる場合、フローは停止しません。

  1. 「フローの終了」パラメーターを エラーメッセージの表示 に設定している
  2. フローが停止するアクションに対して有効な エラー処理 を行っている


「フローの終了」パラメーターをエラーメッセージの表示に設定

実は、「フローを停止する」アクションの「フローの終了」パラメーターを エラーメッセージの表示 に設定すると、このアクションはエラーを発生させます。(条件 1)
そして、「フローを停止する」アクションで発生したエラーに対してエラー処理を行っている場合は、そのエラー処理が動き出すので、フローは停止しません。(条件 2)

フローを停止するアクションでフローが停止しない場合の例

「フローを停止する」アクションでフローが停止しない例は、次のような場合です。


フロー全体


ブロックエラー発生時


フローを停止する

このフローを実行すると、次のような順番に処理を実行します。

  1. 1 行目:ブロックエラー発生時
  2. 2 行目:フローを停止する(ここでエラーが発生します)
  3. 1 行目:ブロックエラー発生時(「ブロックエラー発生時」アクションが「フローを停止する」アクションで発生したエラーをキャッチしました。フローが停止していません)
  4. 3 行目:End(「ブロックエラー発生時」アクションの例外処理モードをブロックの末尾に移動するに設定したので、ブロックの末尾に移動しました)
  5. 4 行目:最後のエラーを取得

他にも、

  1. 「ブロックエラー発生時」の新しいルールでサブフローの実行を定義している
  2. フロー実行を継続するではなく、スローエラーに設定しているが、このエラーをキャッチする親フローが存在する

場合に、フローは停止しません。

ちなみに、「最後のエラーを取得」アクションで取得したエラーを確認すると、「フローを停止する」アクションでエラーが発生していることが分かります。


最後のエラーを取得

フローを停止するアクションでフローが停止しない場合の回避策

「フローを停止する」アクションでフローが停止しない場合の条件を再掲します。

  1. フローの終了パラメーターを エラーメッセージの表示 に設定している
  2. フローが停止するアクションに対して エラー処理 を行っている

これらの条件のうち、少なくとも一方の条件が満たされなければフローは停止します。
1.はエラー状態で失敗させるために必須の設定なので、2.を回避する、すなわち「フローを停止する」アクションに対して、エラー処理を行わないことが有効な対策になると思います。

おわりに

本記事では、フローを停止するアクションでフローが停止しない場合について説明しました。フローを停止するという名前に反してフローが停止するしないことがあるのでご注意ください。

Discussion