MAIL

平日9:00〜17:30 お問い合わせ

MENU

ブログ BLOG

2022/4/11 (Mon)

Power Automate有効期限切れで無効化されたフローを自動起動させる

Power Automate有効期限切れで無効化されたフローを自動起動させる
Tips

Microsoft 365環境でPower Automateを使用したフローを運用していると、勝手に無効化されているフローが存在していることはありませんか。 調べてみると一定期間使われていないフローは有効期限切れとなり停止するとのことでした。 今回はそんなフローを自動起動させる方法を説明したいと思います。

まずは、フローの有効期限について、サイト( https://docs.microsoft.com/ja-jp/power-automate/limits-and-config?WT.mc_id=BA-MVP-5003233#expiration-limits )に以下の説明がありました。

Power Automate1.png

90日間トリガーされないフローは30日後に停止するとのこと。 有効期限が切れたときは作成者に電子メールで通知されるます。電子メールを調べてみると、確かに「警告!フローが実行されていません」というメールとその30日後に「警告!実行していないためフローを無効化しました」というメールが届いているではありませんか。

今回の無効化されたフローの自動起動は、このメール通知をトリガーに対象のフローを起動させます。

フローの説明

さてフローの説明です。
①メール通知をトリガーにするので「新しいメールが届いたとき(V3)」を選択します。

Power Automate2.png

「警告!実行していないためフローを無効化しました」のメール件名で設定しても大丈夫ですが、今回は「警告!フローが実行されていません」でも本フローが起動するように複数条件を設定するため、右上の「...」から設定を選択します。

Power Automate3.png
トリガーの条件に、
@or(contains(triggerBody()?['Subject'], '警告!実行していないためフローを無効化しま した'),contains(triggerBody()?['Subject'], '警告!フローが実行されていません'))
を入力します。
Power Automate4.png
②届いたメール内には対象フローのURLリンクがありますので、URLリンクから自動起動させるための情報を抽出するため「変数を初期化する」を使用します。 「値」には式を選択し、以下の関数を入力します。
split(split(triggerBody()?'body'],'https://flow.microsoft.com/manage/environ ments/')?[1],'/details')?[0]
メール本文から「 https://flow.microsoft.com/manage/environments/ 」で始まる文字列を抽出するという意味です。

Power Automate5.png
Power Automate6.png
③抽出した文字列には「環境名」や「フロー名」が記載されており対象フローの指定に必要なため文字列を分割し、配列に格納します。ここでも「変数を初期化する」を使用します。 「値」には式を選択し、以下の関数を入力します。
split(variables('フロー名を抽出'),'/')

Power Automate7.png
④③で配列に格納した文字列から環境名を抽出します。ここでも「変数を初期化する」を使用します。 「値」には式を選択し、以下の関数を入力します。
first(variables('フロー名を分割'))

Power Automate8.png
⑤③で配列に格納した文字列からフロー名を抽出します。ここでも「変数を初期化する」を使用します。 「値」には式を選択し、以下の関数を入力します。
last(variables('フロー名を分割'))

Power Automate9.png

⑥対象フローが共有アイテムの場合は③で配列へ格納した文字列に「shared」という文字列が含まれます。今回は共有アイテムのみ自動起動の対象としますので「条件」を使用してフローを条件分岐させます。

Power Automate10.png ③で設定した変数「フロー名を分割」を選択し、「次の値を含む」、「shared」と設定します。

Power Automate11.png

⑦自動起動対象のフローの情報を取得するため「フローの取得」を選択します。 環境は④で設定した変数を指定し、Flowには⑤で設定した変数を指定します。

Power Automate12.png

⑧いよいよ対象フローの自動起動です。対象フローは無効化=オフの状態となっているため「フローの更新」を使用して状態をオン(Started)にします。
Power Automate13.png 環境には④で設定した変数を、Flowには⑤で設定した変数を、フローの表示名とフロー定義には⑦の「フローの取得」から取得した値を指定します。 そしてフローの状態を「Started」にします。

Power Automate14.png

以上で完了です。
動作確認は90日+30日=120日後に。。。というわけにはいかないと思いますので、 テスト用のフローをオフにして、件名を「警告! フローが実行されていません」として本文にテスト用のフローのURLを記載したメールを送信してみましょう。 テスト用のフローが無事オンになるでしょう。

参考

参考までに、何も知らないうちにフローが自動起動されたというのもすっきりしないため、無効化されたフローが自動起動された際に、私はSlackに通知するようにしています。 ⑧の「フローの更新」の後にSlackの「メッセージの投稿(V2)」を設定します。

Power Automate15.png いかがだったでしょうか。少しでも役に立てれば幸いです。


=背番号7=