urashineのTechてくてく👣

アウトプットするための環境

Power Automate | Microsoft Formsトリガーのフローが動いていなかった件

つい先日、作成して稼働していた一部のクラウドフローが動いていなかったので
それに関してまとめました。

今回起きてしまった事象の整理

  • 状態がオンで稼働済みの自動化したクラウドフローが、突然に反応が停止していた(状態はオンのまま)

  • 異常フローは共通して、トリガーがMicrosoft Formsの「新しい応答が送信されるとき」であった(ただし同トリガーでも稼働していたフローもあった)
  • 指定していたFormsには回答があるにも関わらず、フローの28日間の実行履歴には表示なし
  • フローを編集し、保存しなおしても事象解消に至らず

フローの稼働開始に至った操作と気づき

  • フローの状態を一旦オフにし、再度オンにしたところ解消
  • 上記操作後、新規で受け付けたFormsの回答に関してはフローに沿って実行されたが、停止していた期間にあった回答は無視された

対応したこと

毎日1回、自分が所有しているフローの状態を一旦オフにし、オンにしなおすフローを作成しました。

採用したコネクタ
  • 変数
  • Power Automate Management
  • コントロール
  • データ操作

フローの全体

フローの全体図

フロー詳細

  1. トリガーは、スケジュール実行の『Recurrence』
    今回は、毎日5時実行設定。

    Recurrence | 毎朝5時に実行


  2. 変数として下記3種を宣言
    Flowname(アレイ )/ 状態のオフオンの切替をする実行対象フロー名の格納先
    FlowDisplayname(アレイ)/ フローの表示名版の格納先
    triggers(文字列) / Formsトリガーかどうか確認できるように用意

    変数の宣言3種
  3. 『自分にフローの一覧表示』アクションを使い、自分が所有しているフローの一覧を取得する。なお、共有されているフローは、この際取得ができない模様。あくまで自分が所有者オリジナルであるフローのみ一覧で取得できる。

    自分のフローの一覧表示 | 所有者が自分のフロー


  4. 3.で取得したデータをApply to eachアクションで繰り返し実行
    変数triggersに、取得したフローの『triggers』情報を設定

    変数の設定 | triggersを設定
  5. 条件アクションを設置。
    フローの状態がオン(Started)であること、かつ、トリガーがFormsであることを判断するたために、式として下記を利用
     
    式:contains(variables('triggers'),'CreateFormWebhook')

    条件 | フローの状態がオン、かつFormsのトリガーか判定


  6. 条件に一致したフローは、変数Flowname、FlowDisplaynameへそれぞれ情報を格納する

    配列変数に追加 | FlownameとFlowDisplayname
  7. 変数Flownameには今回処理するフロー名が格納されている。
    これを『Apply to each』アクションで繰り返し処理を行う。

    Apply to each | 作業対象のフローを繰り返し更新


  8. 『フローの取得』で現在のアイテム(処理対象のフロー)に対してのフロー情報を取得。この後のアクションで必要なフローの定義などの必須情報を取得。

    フローの取得


  9. 『フローの更新アクション』で取得したフローの状態を一旦オフ(Stopped)にする

    フローの更新 | 状態をオフにする
  10. 改めて『フローの更新アクション』でフローのアクションをオン(Started)にする

    フローの更新 | 状態をオンにする


 

今回学んだこと

  • クラウドフローだから安定して稼働してくれると思い込んではいけない(定期チェックを心掛けよ)
  • 様子がおかしい場合は、状態のオン⇔オフも有効手段となる
  • フロー所有者は追加はできても、オリジナルが変わるわけではない

余談

ちなみに、事象発生時にMicrosoftサポートへ問い合わせてみたところ
「本事象は認識はしているものの、防止策はなく、一時的な事象なのでフローを保存してください」との回答でした。

残念ながら、保存だけでは解消しなかったので今回は別ケースに陥ったのかもしれないです。

防止策もFormsのアクションで「指定したフォームの最後の応答IDを取得する」みたいなものがあれば、現在の状況と照合するぐらいはできたと思うのですが、どこにフィードバックすれば良いものか。