← 手順一覧へ戻る
Power Automate Desktopエラー対策

エラーが起きたら別の処理へ進む(戻り先と読取結果を確認)

ファイル読取の失敗時だけRecoveryへ進み、ブロックの後へ戻ります。成功フラグを使って、読めなかった本文を使わない構成を図と3件の確認例で説明します。

画面上の名前は、表示言語やバージョンによって異なる場合があります。Desktopの例は、フロー作成時に「Power Fx を有効にする」をオフにした標準構文です。Power Fx対応フローでは式・変数参照・インデックスの書き方が異なります。このページでは変数を %変数名% と表記します。出力変数の名前を入力する欄では、前後の % は付けません。

実行前に確認

  • 有人・手動実行の練習です。この例にクラウドコネクタは使いませんが、PADの利用・サインイン・ライセンス条件は実行環境で確認してください。無人実行やクラウドからの起動が同じ条件で使えるとは限りません。
  • Recoveryはエラーの確認用です。存在しないファイルの作成や再読取はしません。エラーを扱って続行できても、元の読取が成功したことにはなりません。
  • 読取の直後だけ成功フラグを立て、ブロックの後で確認します。ブロックへ書込や送信を追加すると、途中まで実行された操作は自動では取り消されません。重複する操作を無条件に再試行しないでください。
  • 未定義変数などの設計時エラーは、実行前に直します。Recovery自身の失敗、手動停止、PADの終了まで必ずこの経路で処理できるわけではありません。メッセージはOKを押すまで待機し、エラー文にはローカルパスなどが含まれる場合があります。

1使うアクション

2つのタブに分けて置きます。Recoveryは、ReadInputのエラー設定から呼び出します。

Main:通常の処理と、戻った後の判定

  1. アクション 1変数の設定Main:ReadSucceeded = %False%
  2. アクション 2変数の設定Main:FileText = %""%(空文字)
  3. アクション 3ブロック エラー発生時Main:ReadInput。失敗時だけRecoveryへ
  4. アクション 4ファイルからテキストを読み取るMain:ReadInput内。出力 FileText
  5. アクション 5変数の設定Main:読めた後だけReadSucceeded = %True%
  6. アクション 6EndMain:ReadInputの終わり
  7. アクション 7IfMain:ReadSucceeded が %True% と等しい
  8. アクション 8メッセージを表示Main:はい側でFileTextを表示
  9. アクション 9ElseMain:失敗して戻った場合
  10. アクション 10メッセージを表示Main:いいえ側は固定文だけ
  11. アクション 11EndMain:Ifの終わり

Recovery:エラー時だけ通る別のサブフロー

  1. アクション 1最後のエラーを取得Recovery:先頭。LastErrorへ保存してクリア
  2. アクション 2メッセージを表示Recovery:LastError.Messageを表示して戻る

図で見る処理のイメージ

概念図

同じMainでも、読めたときは本文へ、読めなかったときはRecoveryへ進みます。戻った後の成功フラグで、使えるデータかを判定します。

失敗時はTrueを飛ばして、ブロックの後へ

Main:読取より前に初期化ReadSucceeded = FalseFileTextは空文字。毎回ここから始めます
Main / ReadInputMainのEndまでを監視
ファイルからテキストを読み取るsample.txt → FileText読み取りの成否で経路が変わる

読めたとき

ReadSucceeded = True成功した直後だけ設定

Endへ

読取エラーのとき

Trueの設定を飛ばすFalseのまま

エラー設定からRecoveryへ

別タブ / Recovery
  1. 最後のエラーを取得LastErrorへ保存してからクリア
  2. LastError.Messageを表示OKを押すまで待つ

正常に終わったら、ReadInputのEndの後へ戻る

読めたときは、このサブフローを通りません
Main / EndReadInputの終わり

正常経路も、エラーを処理した経路も、ここで合流

Main:ブロックの外ReadSucceeded が True ?
はい:読取成功FileTextを表示する空の本文も読取成功ならこちら
いいえ:読取失敗固定のメッセージだけFileTextの内容を使わない

「続行できた」と「読めた」を分けるRecoveryはエラーを確認するだけ。ファイルを直したり、再読取したりはしません。

MainとRecoveryの配置・戻り先を示す概念図です。実際の設定画面や実行結果ではありません。Recoveryの失敗や手動停止では、図の合流先まで進むとは限りません。
結果の例

正常時は本文を1回表示。読取エラー時は詳細を確認して戻り、本文を使わない固定文を表示します。空ファイルの読取成功は、失敗とは区別します。

狭い画面では、表を横にスクロールして合流後の表示まで確認できます。

3件の確認例:読取成否・Recovery・合流後の表示(期待値)
入力ファイルReadSucceededRecoveryMainへ戻った後の表示
A:sample.txt(確認用の本文)True通らない読込成功:[確認用の本文]
B:存在しないmissing.txtFalse読取エラーの詳細を表示読み取り失敗のため本文は使いません
C:empty.txt(空のファイル)True(読取成功時)通らない読込成功:[](本文が空)

3件の結果は公式の仕様に沿った確認用の期待値です。空ファイルを含め、実際のPower Automateフローを実行して確認した結果ではありません。

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

2実際の設定内容

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

    準備:WindowsのPower Automate for desktopで、Power Fxをオフにしたフローを作ります。C:\PAD練習 フォルダーを作り、sample.txtをUTF-8で保存します。内容は「確認用の本文」の1行です。別に空のempty.txtも用意します。例は読み取りと画面表示だけで、ファイルの更新・削除・メール送信はしません。

  2. 2

    先にRecoveryというサブフローを作ります。種類を選べる画面ではGlobal(グローバル)を選びます。アクション一覧の「Recovery」の2つのアクションをこのタブへ置きます。Mainの末尾に続けて並べたり、Mainへ通常の「サブフローの実行」を追加したりしません。

  3. 3

    Recoveryの先頭に「最後のエラーを取得(Get last error)」を置き、出力をLastError、エラーをクリア=オンにします。続けて「メッセージを表示」:タイトル=読取エラー、メッセージ=%LastError.Message%、ボタン=OK、自動的に閉じる=オフ。OK後、Recoveryの末尾まで進むとMainへ戻ります。クリアは保存後に行われるので、取得済みのLastErrorは表示できます。

  4. 4

    Mainの先頭に「変数の設定」を2つ置きます。ReadSucceededに%False%、FileTextに%""%を設定します。Falseは文字列ではなく論理値、2個の半角二重引用符は空文字を表す式です。出力変数の名前の欄では%を付けません。初期化はブロックの外で、毎回の読取より前に行います。

  5. 5

    Mainに「ブロック エラー発生時(On block error)」を置き、名前=ReadInput、再試行ポリシー=なし。すべてのエラーの「新しいルール→サブフローの実行」にRecoveryを指定します。例外処理は「フロー実行を続行する→ブロックの末尾に移動(Go to end of block)」にします。ブロックの先頭へ戻す設定ではありません。

  6. 6

    ReadInputの内側に「ファイルからテキストを読み取る」:ファイルパス=C:\PAD練習\sample.txt、内容を保存する形式=単一のテキスト値(Single text value)、エンコード=UTF-8、生成された変数FileContentsの名前をFileTextに変更。この読取アクション自身の再試行はオフにし、個別のエラー処理は既定のエラーをスローする設定を保ちます。「次のアクションに移動」で失敗を無視すると、後続で成功フラグを立ててしまうためです。

  7. 7

    同じブロックの内側で、読取の直後に「変数の設定」を置き、ReadSucceededに%True%を設定します。その次のEndでReadInputを閉じます。正常時だけTrueへ進みます。読取が失敗した場合はRecoveryへ進み、Trueの設定を飛ばしてこのEndの後へ戻るので、Falseのままです。

  8. 8

    ReadInputのEndの後にIfを置きます。最初のオペランド=%ReadSucceeded%、演算子=等しい(=)、2番目のオペランド=%True%。はい側の「メッセージを表示」はタイトル=読込結果、メッセージ=読込成功:[%FileText%]。Else側はタイトル=読込結果、メッセージ=読み取り失敗のため本文は使いません。どちらもボタン=OK、自動的に閉じる=オフ。最後のEndでIfを閉じます。FileTextを使うのは、はい側だけです。

  9. 9

    確認A:sample.txtのパスで保存し、Mainの先頭から実行します。読込結果に「読込成功:[確認用の本文]」が出る想定です。Recoveryの「読取エラー」は出ません。本文の末尾に改行を保存した場合は、角括弧内にその改行も含まれます。

  10. 10

    確認B:入力ファイルは削除せず、読取パスだけを存在しないC:\PAD練習\missing.txtへ変えます。その名前のファイルがないことを確認し、保存してMainの先頭から実行します。「読取エラー」で詳細を確認してOKを押した後、本文を使わない固定文が出る想定です。失敗時のFileTextの内容で成功を判断しません。

  11. 11

    確認C:読取パスをempty.txtへ変えて同様に実行します。空のファイルでも読み取り自体が成功すればTrueとなり、「読込成功:[]」が出る想定です。空欄は読取失敗とは別です。業務で空欄を許可しないなら、成功側に別の空欄チェックが必要です。確認が終わったらパスをsample.txtへ戻して保存します。

Microsoft公式ページで確認する

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