← 手順一覧へ戻る
クラウドフローエラー対策

フロー失敗時にメールで通知し、失敗として終了する

本体スコープの失敗・タイムアウトだけを検知し、実行IDを通知して失敗として終了します。メールを送らずに分岐を試す手順と、成功時との違いを説明します。

画面上の名前は、表示言語やバージョンによって異なる場合があります。クラウドフローはトリガー(フローを開始する条件)から始まり、その後にアクションを実行します。値の受け渡しには、前のステップの出力を選ぶ「動的コンテンツ」を使います。式は[式]欄へ入力します。

実行前に確認

  • この例は通知を試みる構成であり、確実な配信や厳密に1回だけの通知を保証しません。メール送信自体が失敗した場合は、その失敗を実行履歴で確認します。終了がスキップされても通知失敗を成功と読み替えないでください。
  • トリガーが起動しない場合、フローが無効な場合、この監視範囲より前の処理が失敗した場合はMain後の通知だけでは検知できません。所有者への標準通知や実行履歴も確認します。
  • 通知はデータの変更を元に戻しません。途中まで登録できたフローを再実行すると重複する可能性があります。実行IDで対象を確認してから復旧します。
  • エラー本文、顧客情報、トークンなどを丸ごとメールへ載せず、権限を持つ担当者が実行履歴で詳細を調べます。実運用の接続や権限を壊して失敗テストをしないでください。

1使うトリガーとアクション

  1. トリガー手動でフローをトリガーする
  2. アクション作成名前をTestInputに変更。初回の入力は文字列123
  3. アクションスコープ名前をMainに変更
  4. アクション作成Main内。式 int(outputs('TestInput'))
  5. アクション作成Mainの外。名前をErrorNoticeに変更し、失敗・タイムアウト後のみ実行。初回はメールを送らない
  6. アクション終了ErrorNoticeが成功した後だけ。状態は失敗(Failed)。運用時は通知メールの後に置く

図で見る処理のイメージ

概念図

テスト専用フローで、文字列123とabcを入れ替えて通知の実行条件を確かめます。初回はメールの代わりに作成を使います。

  1. 入力

    TestInputに123またはabc

  2. 本体

    Main内で整数に変換

  3. 成功

    123なら数値123。通知も終了もスキップ

  4. 失敗

    abcならErrorNoticeが動く。運用時は続けてメール

  5. 終了

    エラー側の通知成功後にFailedで終了

結果の例

通知処理の成功と業務処理の成功を区別します。abcの確認ではフロー全体が失敗になるのが想定どおりです。

図と結果は説明用の想定です。実際のPower Automateで実行した結果や画面ではありません。

設定と処理を説明する模式図です。実際の設定画面や実行結果のスクリーンショットではありません。

2実際の設定内容

入力する値・操作手順を確認する8ステップの設定と確認方法
  1. 1

    準備:本番から独立したインスタントクラウドフローを作り、手動トリガーを選びます。最初は組み込みアクションだけで試し、ファイル変更やメール送信は行いません。メールへ切り替える前に、Office 365 Outlookの組織アカウント接続、送信権限、DLPポリシー、利用可能なPower Automateライセンスを確認します。標準コネクタでも、どの契約でも無料という意味ではありません。

  2. 2

    トリガー直後にデータ操作の「作成」を置き、名前をTestInputに変更します。入力欄へ通常のテキストとして123と入力します。その後にスコープMainを置き、中の「作成」の式欄へ int(outputs('TestInput')) と入力します。整数へ変換する練習です。式全体を文字列として入力しないでください。

  3. 3

    Mainの直後・外側へ「作成」を追加し、名前をErrorNoticeにします。設定の「実行条件」(旧デザイナーでは「実行条件の構成」)で、Mainの「失敗しました」「タイムアウトしました」のみを選択します。「成功しました」「スキップされました」は外します。入力は「練習フローでエラー」を通常テキストとして指定します。

  4. 4

    ErrorNoticeの後にコントロールの「終了」を置きます。実行条件はErrorNoticeが成功した場合だけのままにし、状態を失敗(Failed)、コードをMainFailed、メッセージを「本体でエラー。実行履歴を確認」にします。通知処理が成功しても本体の失敗を成功扱いにしないためです。Main内の「終了」でテストエラーを起こすとフロー全体が止まるので、エラー通知のテストには使いません。

  5. 5

    確認A:TestInput=123で保存して手動実行します。Mainの変換結果は数値123、ErrorNoticeと終了はスキップされ、フロー全体が成功する想定です。実行履歴を開いて各アクションの状態と出力を確認します。

  6. 6

    確認B:TestInputだけをabcへ変更して実行します。整数に変換できないためMainが失敗し、ErrorNoticeの出力が「練習フローでエラー」、終了の状態が失敗になる想定です。この練習は失敗の分岐だけを確認し、タイムアウトを実測するテストではありません。確認後は123へ戻します。

  7. 7

    運用への切り替え:ErrorNoticeの後・終了の前へOffice 365 Outlookの「メールの送信 (V2)」を挿入します。メールはErrorNotice成功後、終了はメール成功後のみ実行する設定を確認します。宛先はまず自分の組織メール、件名は「練習フローの処理失敗」、本文はフロー名と、式欄から挿入した utcNow()、workflow()?['run']?['name'] による実行IDにします。utcNow()は日本時間ではなくUTCです。

  8. 8

    自分宛ての通知を確認してから管理担当の宛先に変更し、Main内を監視したい業務処理へ置き換えます。TestInputは練習用です。成功時は通知なし、失敗・タイムアウト時は通知を試みる構成です。本体に複数アクションがあれば、Main全体の結果を実行条件で判定します。

Microsoft公式ページで確認する

設定を確認できる公式資料