ADVERTISEMENT

【Power Automate】フローの実行履歴CSVが想定どおり進まない時の入力値と条件分岐の直し方

【Power Automate】フローの実行履歴CSVが想定どおり進まない時の入力値と条件分岐の直し方
🛡️ 超解決

Power Automateでフローの実行履歴をCSVに出力する処理を組んだものの、想定したデータが出力されず困惑した経験はないでしょうか。特に、複数の条件分岐や動的な値を使っている場合、CSVの行や列がずれたり、特定の条件でデータが欠落したりすることがあります。この問題の多くは、フロー内の入力値の渡し方や条件分岐の設定に原因が潜んでいます。本記事では、CSV出力が想定通りに進まない原因を切り分ける方法と、具体的な修正手順を解説します。

【要点】この記事で確認すること

  • 最初に見る場所: フローの実行履歴から各実行を開き、入力値(トリガーやアクションの出力)が正しいか確認します。
  • 切り分けの軸: CSV生成前のデータソースの問題か、生成後のCSV加工(条件分岐や列の指定)の問題か、またはアクセス権限や環境設定の問題かを切り分けます。
  • 注意点: 会社の共有環境でフローを編集する場合、管理者が設定したコネクタやデータ損失防止ポリシー(DLP)を変更しないよう注意してください。必要に応じて管理者に確認を依頼します。

ADVERTISEMENT

CSV出力が想定通りに進まない典型的な原因

Power AutomateのフローでCSVを作成する際、よく遭遇する問題は以下の3つに大別されます。まずは自分の状況がどのパターンに該当するか確認してください。

問題パターン 具体例 主な原因
データが欠落する CSVに出力される行数が少ない、特定の列が空欄 条件分岐でelseブランチが未定義、または列の割り当て漏れ
フォーマットが崩れる 日付が文字列にならない、数値がカンマ付きで出力 入力値の型変換が正しく行われていない、またはCSVテンプレートの構文ミス
フロー自体がエラーになる CSV生成アクションで「BadRequest」や「Failed」が発生 コネクタの認証切れ、APIの制限超過、または無効な列名や値

これらの原因を特定するには、フローの実行履歴を詳細に調べることが不可欠です。次の章では具体的な確認手順を説明します。

実行履歴から入力値と条件分岐を確認する手順

まずはフローの実行履歴を開き、問題の実行を特定します。以下の手順で入力値と各アクションの出力を確認してください。

  1. Power Automateのポータル(make.powerautomate.com)にサインインし、左メニューから「マイフロー」を選択します。
  2. 対象のフローをクリックして詳細画面を開き、上部メニューの「実行履歴」タブをクリックします。
  3. 意図しないCSVが出力された日時の実行をクリックし、実行詳細を開きます。
  4. 各アクション(トリガー、CSV作成前のデータ取得、CSV作成アクション)を展開し、「入力」と「出力」の内容を確認します。特に「出力」に期待する値が含まれているか、またはエラーメッセージがないかをチェックします。
  5. 条件分岐(ConditionアクションやSwitchアクション)がある場合は、その分岐結果が想定通りになっているか確認します。分岐の結果により、異なるアクションが実行されていることがあります。
  6. CSVを作成するアクション(例:「CSVテーブルの作成」や「ファイルの作成」アクション)の「入力」を確認し、列名や配列の構造が正しいか検証します。

この手順により、問題がデータソース側なのか、条件分岐なのか、CSV作成アクションの設定なのかを切り分けられます。多くの場合、CSV作成アクションの「入力」で渡している配列の要素数が期待より少ないことが原因です。

入力値の具体例とチェックポイント

例えば、SharePointリストからアイテムを取得し、CSVに出力するフローを考えます。実行履歴で「アイテムの取得」アクションの「出力」を見ると、取得したアイテムの配列が表示されます。この配列に含まれるフィールド名と値が正しいか確認します。もしフィールド名が異なる場合(例:「Title」と「タイトル」など言語の違い)、CSVの列名と一致していないとデータが空になります。

また、日付や数値の書式も確認します。Power Automateでは、日付はISO 8601形式(例:2025-01-15T10:30:00Z)で扱われることが多く、そのままCSVに出力すると想定と異なる表記になることがあります。その場合は「formatDateTime」関数を使って変換する必要があります。

条件分岐の設定ミスを修正する方法

条件分岐が原因でCSVの内容が想定通りにならないケースは多いです。特に「条件」アクションで分岐した後、各ブランチで異なるCSVを作成したり、片方のブランチでデータを追加し忘れたりする点に注意が必要です。

分岐後のアクションが正しく構成されているか確認する

以下のポイントを順にチェックします。

  • 条件分岐の条件式が正しいか:例えば「値が空でない場合」という条件で、空の文字列を除外したい場合、式は「@empty(variables(‘var’))」ではなく「@not(empty(variables(‘var’)))」と書く必要があります。
  • 各ブランチのアクションが同一のデータ構造を生成しているか:CSVに出力する配列の列名や順序がブランチ間で異なると、CSVが壊れます。
  • デフォルトの動作(elseブランチ)が定義されているか:条件に該当しない場合に何もアクションがないと、データが欠落します。elseブランチでは空の配列を生成するなどの対応が必要です。

修正例:条件分岐のelseブランチを追加する

例えば、承認ステータスが「承認済み」の場合のみCSVに含めたい場合、条件アクションで「ステータスが承認済みに等しい」という条件を設定します。「はい」のブランチでCSVに追加するアクションを置き、「いいえ」のブランチでは何もしないと、承認済み以外のデータは出力されません。しかし、後続のCSV作成アクションがすべてのデータをまとめて処理する場合、条件で除外されたデータはそもそも配列に含まれないため、CSVから欠落します。必要なのは、条件でデータをフィルタするのではなく、配列をフィルタする「フィルター配列」アクションを使うことです。

このように、条件分岐の設計を再検討し、データの取捨選択は配列操作で行う方が安全です。

実践的な修正手順:CSV生成アクションの設定を見直す

CSV生成アクション(「CSVテーブルの作成」や「Apply to each」で行を追加するパターン)の設定をステップバイステップで確認します。以下は「CSVテーブルの作成」アクションを使用する場合の修正手順です。

  1. フロー編集画面を開き、CSVテーブルを作成するアクションをクリックします。
  2. 「From」プロパティに配列が指定されていることを確認します。この配列が、出力したいデータの1行目から最終行までを含んでいる必要があります。動的な値を使っている場合は、式エディタで内容を確認します。
  3. 「Columns」プロパティで、CSVの列名と対応する値を確認します。列名はヘッダー行にそのまま表示されるため、不要なスペースや特殊文字が入っていないかチェックします。
  4. 各列の「Value」に動的な値が正しく設定されているか確認します。よくあるミスは、オブジェクトのプロパティ名を間違えている(例えば「item()?[‘Title’]」と書くべきところを「item()?[‘title’]」と小文字にしている)ことです。
  5. プレビュー機能を使って、出力されるCSVのサンプルを確認します(可能な場合)。プレビューが表示されない場合は、一度フローを保存して「テスト」を実行し、出力されたCSVファイルを開いて検証します。

もし「CSVテーブルの作成」でうまくいかない場合は、代わりに「Apply to each」で1行ずつCSV文字列を構築する方法もあります。その場合、各行の区切り文字や改行コードに注意してください。

失敗パターンとその対処法

実際に発生しやすい失敗パターンを3つ紹介します。

パターン1:出力されるCSVに不要な空白行が入る

これは、条件分岐やループ内で空の配列要素が含まれている場合に起こります。「Apply to each」で各要素をCSVに追記する際、空の要素に対して空行を追加してしまうためです。対処法として、データソースの段階で「フィルター配列」アクションを使って空の値を除外します。

パターン2:日付や数値の書式が意図しない形になる

Power Automateでは地域設定が影響する場合があります。例えば、日付が「1/15/2025」ではなく「2025-01-15」と出力されるのは、ISO形式優先のためです。明示的に「formatDateTime(variables(‘日付’), ‘yyyy/MM/dd’)」のように変換式を追加しましょう。数値は「string(variables(‘数値’))」で文字列に変換してからCSVに埋め込みます。

パターン3:CSVファイルが作成されない、または空っぽ

トリガーが正しく起動していない可能性があります。実行履歴でフローがスキップされたり、実行が失敗していたりしないか確認します。また、ファイル作成先のフォルダに対する権限が不足している場合もあります。管理者に問い合わせて、サービスアカウントが適切なアクセス権を持っているか確認してください。

管理者へ確認すべき情報

上記の手順で問題が解決しない場合、Power Automateの環境設定やライセンスに関わる制限が原因かもしれません。以下の情報をまとめて管理者に伝えるとスムーズです。

  • フローの実行履歴から、エラーが発生したアクションの詳細(入力と出力の内容、エラーメッセージ)をコピーします。
  • CSV出力先となるストレージ(SharePoint、OneDrive、SQL Serverなど)の接続設定が正しいか、認証が切れていないか確認します。
  • データ損失防止ポリシー(DLP)によって特定のコネクタがブロックされていないか、管理者に確認を依頼します。
  • 使用しているライセンス(Power Automate 無償版、Office 365 版、有償版)によって、フローの実行回数や負荷に制限があるため、大量データを扱う場合は分割処理を検討する必要があります。

よくある質問(FAQ)

Q1. CSVのヘッダー行が出力されないのはなぜですか?
「CSVテーブルの作成」アクションではデフォルトでヘッダーが出力されますが、「Apply to each」で自作する場合はヘッダー行を自分で追加する必要があります。最初の行にヘッダー文字列を設定するようにしてください。

Q2. 条件分岐で複数の条件を組み合わせたい場合、どうすればよいですか?
「条件」アクションは単一条件のみ対応しているため、複数条件はネストするか、式で「and」「or」を使って1つの条件にまとめます。式の例:@and(equals(item()?[‘Status’],’承認済み’), greater(item()?[‘金額’], 10000))

Q3. CSVの文字コードがUTF-8ではなくShift-JISで出力されてしまうのですが?
Power Automateの標準アクションでは文字コードを指定できません。CSVをExcelで開く場合、UTF-8のBOM付きにするか、後続のアクションで文字コード変換を行う必要があります。「ファイルの作成」アクションの前に「compost」関数などでBOMを追加する方法があります。

まとめ

Power AutomateでCSV出力が想定通りに進まない原因は、入力値の型や条件分岐の設定ミスにあることがほとんどです。実行履歴を徹底的に確認し、各アクションの入出力を検証することで問題を特定できます。また、データのフィルタリングは条件分岐ではなく配列操作で行うと、出力の一貫性が保たれます。さらに、日付や数値の書式変換を忘れずに行い、管理者に確認すべきポイントを整理しておけば、トラブルシューティングが効率的に進むでしょう。本記事の手順を参考に、思い通りのCSVを生成できるフローに修正してください。


ADVERTISEMENT

この記事の監修者
✍️

超解決 第一編集部

疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。

ADVERTISEMENT