Power Automate | Microsoft Formsトリガーのフローが動いていなかった件
つい先日、作成して稼働していた一部のクラウドフローが動いていなかったので
それに関してまとめました。
今回起きてしまった事象の整理
-
状態がオンで稼働済みの自動化したクラウドフローが、突然に反応が停止していた(状態はオンのまま)
- 異常フローは共通して、トリガーがMicrosoft Formsの「新しい応答が送信されるとき」であった(ただし同トリガーでも稼働していたフローもあった)
- 指定していたFormsには回答があるにも関わらず、フローの28日間の実行履歴には表示なし
- フローを編集し、保存しなおしても事象解消に至らず
フローの稼働開始に至った操作と気づき
- フローの状態を一旦オフにし、再度オンにしたところ解消
- 上記操作後、新規で受け付けたFormsの回答に関してはフローに沿って実行されたが、停止していた期間にあった回答は無視された
対応したこと
毎日1回、自分が所有しているフローの状態を一旦オフにし、オンにしなおすフローを作成しました。
採用したコネクタ
- 変数
- Power Automate Management
- コントロール
- データ操作
フローの全体
フロー詳細
- トリガーは、スケジュール実行の『Recurrence』
今回は、毎日5時実行設定。
- 変数として下記3種を宣言
Flowname(アレイ )/ 状態のオフオンの切替をする実行対象フロー名の格納先
FlowDisplayname(アレイ)/ フローの表示名版の格納先
triggers(文字列) / Formsトリガーかどうか確認できるように用意 - 『自分にフローの一覧表示』アクションを使い、自分が所有しているフローの一覧を取得する。なお、共有されているフローは、この際取得ができない模様。あくまで自分が所有者オリジナルであるフローのみ一覧で取得できる。
- 3.で取得したデータをApply to eachアクションで繰り返し実行
変数triggersに、取得したフローの『triggers』情報を設定
- 条件アクションを設置。
フローの状態がオン(Started)であること、かつ、トリガーがFormsであることを判断するたために、式として下記を利用
式:contains(variables('triggers'),'CreateFormWebhook')
- 条件に一致したフローは、変数Flowname、FlowDisplaynameへそれぞれ情報を格納する
- 変数Flownameには今回処理するフロー名が格納されている。
これを『Apply to each』アクションで繰り返し処理を行う。
- 『フローの取得』で現在のアイテム(処理対象のフロー)に対してのフロー情報を取得。この後のアクションで必要なフローの定義などの必須情報を取得。
- 『フローの更新アクション』で取得したフローの状態を一旦オフ(Stopped)にする
- 改めて『フローの更新アクション』でフローのアクションをオン(Started)にする
今回学んだこと
- クラウドフローだから安定して稼働してくれると思い込んではいけない(定期チェックを心掛けよ)
- 様子がおかしい場合は、状態のオン⇔オフも有効手段となる
- フロー所有者は追加はできても、オリジナルが変わるわけではない
余談
ちなみに、事象発生時にMicrosoftサポートへ問い合わせてみたところ
「本事象は認識はしているものの、防止策はなく、一時的な事象なのでフローを保存してください」との回答でした。
残念ながら、保存だけでは解消しなかったので今回は別ケースに陥ったのかもしれないです。
防止策もFormsのアクションで「指定したフォームの最後の応答IDを取得する」みたいなものがあれば、現在の状況と照合するぐらいはできたと思うのですが、どこにフィードバックすれば良いものか。