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以外のコードが返ってくる場合があるかどうかです。あるとすると正常終了させるのはまずい場合もありそうです。

私の場合は、見つかったら通知するだけの機能なので問題はありませんが。




コメント

アクセス数の多い投稿

セキュリティ対策ソフトのノートンが詐欺ソフトまがいになってしまってショック

ZIPファイルを開こうとすると、展開を完了できません、と言われる

Excel 2019 クエリが原因で日本語入力の一文字目が勝手に確定する

Excelのテーブルに行や列を挿入する際のエラー

オカムラ家具のOAチェアー、コンテッサを分解清掃

突然滅茶苦茶遅くなったPCがWindows Updateのキャッシュクリアで復活

ChatGPTが日本語からVBAのコードを生成できてたまげる

Windows セキュリティーのビックリマークが消えない

Power Automate Desktopでブラウザでダウンロードしたファイルを処理する

Excel VBAからODBCを使ってデータを簡単に取得する