LoginSignup
17
19

More than 3 years have passed since last update.

Power Automate で Do-Until 制御ループを脱出する

Last updated at Posted at 2019-04-21

はじめに

Power Automate の制御部品は、基本パーツのようなイメージでラインナップされているので、望むフローを構成するときは「アイデア勝負」になってくることが多いです。

今回は、Do-Until制御によるループを途中で離脱・脱出したい、プログラムだとbreakに相当する制御について、アイデアを記載します。

要件

次のような単純化したフローを例にします。必要な処理を(カウントダウン)が完了するまで繰り返し、終了したら(カウントが0になったら)Do-Until制御のループが終了します。

image.png

ここで、次のような仕様が増えたとしましょう。

ループ内でApprovalsによる承認申請を行い、一度でも拒否されたらループを終了する。

となると、承認アクションを追加した後、そこにループを脱出するステップが欲しくなるわけです。

image.png

実現例

「ほしいアクションがない!」となるわけなんですが、よくよく動作を整理すると、次のように考えることができます。

「10回繰り返すあいだループを継続する」+「途中で拒否されたらループを終了する」
=「10回繰り返す、もしくは拒否されない、あいだループを継続する」

というわけで、次のようにします。

image.png

一行で解説しますと

「ループを継続するか否か or ループを脱出するか否か」をそのままブール変数として定義し、Do-Until制御の条件にしてしまいます。

そして、お好きなタイミングでフラグを立ててしまえばいいわけです。

今回の場合、2か所。まずはApprovalsで拒否されたときにフラグを立てます。

image.png

もう1か所、10回ループを繰り返し終わったらフラグを立てます。

image.png

これで、複数の場合、好きな時に脱出するような構成ができるようになります。

注意点

注意点として途中離脱する条件が揃ったら、ループ内の処理を行わないようにする必要があります。

ここには制御によっていろいろなテクニックがあります。

今回の場合、拒否されたら、ループカウントのカウントダウンを行わないようにする必要があります。今回は制御による「はい」「いいえ」がありますので、そこで分離できましたね。

image.png

拒否されたら、もうカウントダウンはされません。安心してループを脱出することができます。

ただし、後続処理がさらに複雑になったりするときがありますので、そのときは「スコープ」「実行条件の構成」を活用しましょう。こんなことができるようになります。

image.png

スコープについては、次の記事を参考にしてください。

実行条件の構成については、こっちなどを。

おわりに

大事なのは「目的にフォーカスすること」「細目にとらわれないこと」です。

Power Automate で、日々の手作業をもっとサボりましょう!!!

17
19
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
19