Power Automate でHTTP使用時の「失敗」を「成功」にする
HTTPアクションでステータスが404のときフローの実行結果が失敗になる
しばらく前に、Power Autoamteクラウド版で、とある銀行のWebサイトに当日のPDFファイルが公開されたらメールで通知するというフローを作成しました。
HTTPアクションを使い、ステータスコードが200の場合にOutlookを使ってメールを飛ばすという仕組みです。
フロー自体は動作していて、ファイルが公開されるとメールが飛んできます。
しかし、たまにシステム側からエラーが発生していますという通知メールが飛んでくるようになりました。
調べると、HTTPアクションを実行した際に、ページが存在しない(ステータス404)とアクションの実行結果がエラー扱いとなり、その結果フローも失敗したことになっていることがわかりました。
状態コードを見て、成功で終了してもダメ
回避するために、HTTPステータスコードが200でなければ、終了アクションを呼び出して、終了ステータス成功で終わるようにしてみました。
しかし、これは効果がなく、相変わらずフローが失敗となって終了してしまいます。
前のアクションが失敗したときの処理が必要
解決方法はこちらのページにありました。
HTTP 404 Error Handling: Apply To Each
なるほど。実行後に前のアクションの実行結果を判定し、それを元に終了アクションを呼び出し、成功ステータスにすればよいようです。
早速試してみたところ、うまくいき、失敗とはならなくなりました。
サンプル
HTTPアクションを追加し、URLを指定します。
次に条件アクションを追加し、「状態コード(HTTP Status Code)」が200のときにメールを送るアクションを追加し、そうでないときは終了アクションを実行します。
ただし、上で書いたように、ページが存在しない場合、この終了アクションは機能しません。HTTPアクションで処理が失敗し、そこで終了するため、ここまで落ちてこないのでしょう。
HTTPアクションと条件アクションの間の「+」をクリックし、「並列分岐の追加」をクリックします。
終了アクションを検索し、追加します。
終了アクションの状態を「成功」にします。
終了アクションの「…」をクリックし、「実行条件の構成」をクリックします。
条件を「に失敗しました」に変更します。これで、HTTPが失敗したときに終了アクションが実行され、フローの実行結果が成功になります。
条件アクションの方も「に成功しました」のときだけ実行されるように変更しておきます。
上で書いたように、状態コードが200以外の場合に、終了アクションを実行する意味があるのか疑問です。HTTPアクションが成功するけれど200以外のコードが返ってくる場合があるかどうかです。あるとすると正常終了させるのはまずい場合もありそうです。
私の場合は、見つかったら通知するだけの機能なので問題はありませんが。
コメント
コメントを投稿