MoreBeerMorePower

Power Platform中心だけど、ノーコード/ローコード系を書いてます。

自動で無効化されたフローを自動で再有効化する

[2020/11/18更新]: チームフローについて追記しました。

最近になって、「XXXっていうフローが最近使われていないから無効化するよ!」という内容のメールがよく来るようになりました。

おそらく新しい管理機能のリリースなのだと思いますが、たまにしか使わないフローでも無効化されていると探しにくくなるなーと思い、『自動で無効化されたフローを自動で再有効化するフロー』を考えてみました。

f:id:mofumofu_dance:20201028151918p:plain
このようなメールが届く。見に行くとフローは無効化されている

メールの形式

届くメールは (私のテナントは英語設定だからか) 必ず『Alert! Your flow has been turned off since it was not running』という件名で来ます。

また、メール本文の中 (HTML)を見てみると、本文中にフローへのリンクが含まれていることがわかります。

f:id:mofumofu_dance:20201028152054p:plain
メールの本文にはフローへのリンクがある

フローのURLは

https://flow.microsoft.com/manage/environments/環境の内部名/flows/フローの内部名/details

またはチームで共有しているフローであれば

https://flow.microsoft.com/manage/environments/環境の内部名/flows/shared/フローの内部名/details

の形式になっているので、メール本文から無効化対象のフローを特定することができます。

再有効化するフロー

再有効化するフロー自体は非常に短いです。トリガー入れて大きく4ステップ。

f:id:mofumofu_dance:20201118133348p:plain
再有効化フロー。Power Automate Managementコネクターで再有効化

  1. まずはメール受信をトリガーにします。この時件名でトリガーする条件を指定しています。
  2. メール本文のflowのURLから、環境内部名とフローの内部名を含む箇所を抽出します。
  3. 2.では環境名とフロー名がつながっているので、これを分割するための変数を設定します。
  4. 最後にPower Automate Management コネクターの フローの有効化 アクションで無効化されたフローを指定します。

トリガーについては特に説明することもないので、ご自分に送られてきたメールを参考に、件名のフィルターを設定してください。

『2. メール本文のflowのURLから、環境内部名とフローの内部名を含む箇所を抽出』では文字列操作の関数を使っています。

split(split(triggerBody()?['body'],'https://flow.microsoft.com/manage/environments/')?[1],'/details')?[0]

この操作によってメール本文中のhrefにあるURLのうち https://flow.microsoft.com/manage/environments//detailsで挟まれた部分が抽出されます。 (環境の内部名/flows/フローの内部名 または 環境の内部名/flows/shared/フローの内部名 の形式)

『3.つながっている環境名とフロー名を分割するための変数を設定』では、まず文字列型の変数を初期化 (名前は divider) して、その後条件分岐で変数を更新しています。

条件分岐には ステップ2 で抽出した結果 (ここでは outputs('URL部分の抽出') ) を指定し、この結果が sharedを含むかどうかを判定しています。

判定がYESの場合には、分割する文字列を /flows/shared/とし、判定がNOの場合には /flows/を設定しています。

最後に「Power Automate Management」コネクターからフロー有効化のアクションを追加し、環境とフローにそれぞれ以下を設定したら完成です。

環境

split(outputs('URL部分の抽出'),variables('divider'))?[0]

フロー

split(outputs('URL部分の抽出'),variables('divider'))?[1]

f:id:mofumofu_dance:20201118134434p:plain
Power Automate Management コネクターからアクションを追加

おわり

おそらく、無効化までの期間など、そのうち設定できるようになるのだと思いますが、年1回、半年一回くらいの周期でしか使わないフローがあれば暫定対応として参考にしてみてください。

謝辞

チームで共有しているフローについては、実際に使っていただきフィードバックをくださった @halentio さんにこの場を借りてお礼申し上げます。