Power Automateでフローを作成していると、変数に値を設定したはずなのに実行時に空になってしまうケースに遭遇することがあります。この現象が発生すると、条件分岐や次のアクションで予期しない動作を引き起こすため、業務に影響が及びます。原因は多岐にわたり、単純な設定ミスからフローの設計パターンに起因するものまで様々です。本記事では、変数の値が空になる原因を体系立てて整理し、効率的なトラブルシューティングの手順を解説します。
【要点】この記事で確認すること
- 最初に見る場所: 変数アクションの構成(初期化・設定・増分)が正しいか、フロー実行履歴の出力を確認する。
- 切り分けの軸: フロー内の変数操作が期待通りか(代入順序・スコープ・型)、外部データ(トリガー・コネクタ)の値が空でないか。
- 注意点: 会社PCの管理下にある環境では、Data Loss Prevention(DLP)ポリシーやコネクタの制限が原因で変数に値が入らない場合もある。管理者に確認が必要なケースがある。
ADVERTISEMENT
変数の値が空になる主な原因
原因1: 変数アクションの設定ミス
Power Automateで変数を使う際、まず「変数を初期化する」アクションで名前と種類を定義します。その後「変数を設定する」や「変数を増やす」で値を代入しますが、初期化の段階でデフォルト値を設定し忘れると、初期値が空になります。また、変数の種類(文字列、整数、ブール、オブジェクトなど)と代入する値の型が一致していない場合も、意図しない空やエラーが発生します。
原因2: フローの実行順序とスコープの誤解
変数にはスコープ(有効範囲)があります。例えば、Apply to eachループ内で変数を初期化すると、ループの外ではその変数にアクセスできません。また、並列分岐(Parallel Branch)を使用している場合、一方のブランチで設定した変数が他方のブランチで参照できないことがあります。フローの設計図を確認し、変数の定義位置と参照位置が適切かを検証してください。
原因3: トリガーやコネクタから取得した値の空
フローが外部サービスからデータを取得するとき、そのデータ自体が空である可能性があります。例えば、SharePointのリストアイテムを取得する際、条件に合致するアイテムが存在しないと空の配列が返り、そこからプロパティを変数に代入しようとすると空になります。トリガーの出力を事前に確認するため、デバッグ用にコメントアクションやOffice 365 Outlookのメール送信アクションで値を出力してみると良いです。
トラブルシューティングの確認手順
- フロー実行履歴を確認する – Power Automateポータルで該当フローの実行履歴を開き、各アクションの入力・出力を確認します。変数アクションの出力に「null」や空文字が表示されていないかチェックします。
- 変数初期化アクションを再確認する – 変数を初期化するアクションがフロー内で1回だけ実行されているか、ループ内で何度も初期化されていないかを確認します。初期化でデフォルト値が設定されているかも見直します。
- 代入順序と条件分岐を検証する – 「変数を設定する」アクションが期待するタイミングで実行されているか、条件分岐(Condition)の結果によってスキップされていないかを確認します。フローをステップごとに追跡するには、別のフローをコピーしてシーケンスを簡略化する方法も有効です。
- データ型の一致をチェックする – 変数の種類と代入する値の型が合っているかを確認します。例えば、整数型の変数に文字列の数字を代入する場合、明示的な変換(int()関数)が必要な場合があります。
- 外部コネクタの出力をテストする – コネクタのアクション(「アイテムの取得」など)で正しいデータが取得できているか、単独でテスト実行します。必要なら「応答の作成」アクションを使って生のJSON出力を確認します。
状況別の比較表
| 状況 | 原因の方向性 | 確認ポイント |
|---|---|---|
| 変数の初期値が空 | 初期化アクションの設定 | デフォルト値の指定有無、変数の種類 |
| 処理途中で値が空になる | フロー制御(条件・ループ・並列) | アクションの実行順序、スコープ、分岐の経路 |
| 特定の条件下でのみ空になる | データソースの状態 | トリガー入力やコネクタ出力に空の項目がないか |
| 他のユーザー環境では正常 | 環境設定・アクセス権 | コネクタの接続認証、DLPポリシー、テナント制限 |
よくある失敗パターンと対策
パターンA: ループ内で変数を初期化している
Apply to eachの内部に「変数を初期化する」アクションを配置すると、ループのたびに変数がリセットされます。この場合、ループの外で初期化を行い、ループ内では「変数を設定する」または「変数を増やす」のみを使用するように設計を変更してください。
パターンB: 条件分岐で変数代入がスキップされる
ConditionアクションのYes/No分岐のどちらかでしか変数を設定していない場合、もう一方の分岐を通ったときに変数が空のままになります。フロー全体で変数に値が設定される経路を網羅的に洗い出し、必要に応じてデフォルト値を割り当てるアクションを追加します。
パターンC: 並列ブランチ間での変数共有
並列ブランチ内で変数を設定しても、他のブランチからは参照できません。変数を全体で共有したい場合は、並列ブランチの外で変数を定義し、各ブランチの出力を順次処理するように設計を見直します。または、変数ではなくトリガーやComposeアクションの出力を直接参照する方法も検討しましょう。
管理者に確認すべき項目
会社PCでPower Automateを利用している場合、管理者による制限が変数の動作に影響することがあります。以下の点を管理者に問い合わせてください。
- Data Loss Prevention(DLP)ポリシー:特定のコネクタの使用が制限されていると、コネクタから正しく値が取得できず変数が空になる場合があります。
- カスタムコネクタやオンプレミスデータゲートウェイの設定:接続が不安定だと値の取得に失敗することがあります。
- Power Automateのライセンスと機能制限:無償版やOffice 365版では使用できるアクションやコネクタに制限がある場合があります。
よくある質問(FAQ)
Q1. フローを再実行したら一時的に解消しました。何が原因ですか?
一時的なネットワーク不具合や外部サービスの応答遅延が原因である可能性が高いです。ただし、恒久的な対策としては、リトライポリシーの設定(アクションの設定内「再試行」タブ)や、変数に値を代入する前にデータの存在チェック(「条件」アクションで空かどうかを判定)を追加することをお勧めします。
Q2. デバッグ用に変数の値を確認する方法はありますか?
「コメント」アクションでは値の出力ができませんが、「Office 365 Outlook – メール送信」アクションを一時的に挿入して自分宛に変数の内容を送信する方法があります。また、「応答の作成」アクションをフローの最後に追加し、テスト実行でその出力を確認することも可能です。
Q3. 「変数を設定する」で式を使って計算した結果が空になります。
式の構文エラーや、参照している変数や関数の出力が空である可能性があります。式エディタで「動的なコンテンツ」を追加する際、正しいトークンが選択されているか確認してください。また、式内の関数名(例:add、concat、if)が正しいか、大文字小文字に注意します。
まとめ
Power Automateで変数の値が空になる原因は、変数アクションの設定ミス、フロー制御の設計ミス、外部データの空であることが大半です。まずはフロー実行履歴で各アクションの入出力を確認し、問題のある箇所を特定してください。その上で、変数の初期化位置や代入のタイミング、データ型の一致をチェックすることで、多くの問題は解決します。どうしても原因が特定できない場合は、管理者に環境設定やポリシーの制限を確認することをお勧めします。これらの手順を日常のトラブルシューティングに取り入れることで、安定した自動化フローの運用が可能になります。
ADVERTISEMENT
超解決 第一編集部
疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。
Office・仕事術の人気記事ランキング
- 【Outlook】添付ファイルが「Winmail.dat」に化ける!受信側が困らない送信設定
- 【Teams】メッセージを「保存済み」にして後で読む!重要なチャットをブックマークして整理する技
- 【神技】保存せずに閉じたExcel・Wordファイルを復元する!消えたデータを復活させる4つの救出法
- 【Word】差し込み印刷で数字の桁を整える!金額にカンマ(桁区切り)を入れる設定
- 【Copilot】「サービスに接続できません」エラーの原因切り分けと対処法
- 【Word】校閲機能の基本!赤字(変更履歴)とコメントで修正を見える化する
- 【PDF】PDFに入力した文字の「フォント・サイズ・色」を変更するプロパティ設定
- 【PDF】PDFのサムネイルプレビューが表示されない!エクスプローラーの設定とAcrobat環境設定
- 【Teams】会議の「参加者リスト」を出席後にダウンロードする!誰が参加したか確認する手順
- 【PDF】結合するPDFの「用紙サイズ」がバラバラな時、すべてを「A4サイズ」に強制リサイズしてから結合する
