Power Automateでフローを作成していると、変数やトリガー出力が空白の場合の条件判定が期待どおりに動作しないことがあります。たとえば「値が空のときAを実行、そうでなければBを実行」という分岐が正しく評価されず、常にAやBに進んでしまうケースです。この問題の原因は、単純な設定ミスだけでなく、組織のDLP(データ損失防止)ポリシーやユーザーのライセンス形態が影響している場合があります。本記事では、空白値の条件判定が想定どおり進まないときの切り分け手順と、DLPポリシー・ライセンスの観点からの見直し方法を具体的に解説します。
【要点】この記事で確認すること
- 最初に見る場所: Power Automateの条件式内で使用している関数(empty、equals、lengthなど)と、扱っているデータ型(null、空文字、空白スペース)の違いを確認します。
- 切り分けの軸: 端末側のブラウザキャッシュやフローのバージョン、組織のDLPポリシーによるコネクタ制限、ユーザーライセンス(無料・有料)の3軸で原因を特定します。
- 注意点: DLPポリシーの変更やライセンスアップグレードは管理者権限が必要です。会社PCで勝手に変更せず、必ずIT管理者へ連絡してください。
ADVERTISEMENT
目次
空白値の条件判定がうまくいかない主な原因
データ型の不一致
Power Automateでは、同じ「空白」でもデータ型によって扱いが異なります。たとえば、文字列型の変数に空文字「」が入っている場合と、値が設定されていないnullの場合では、判定結果が変わります。empty(variables('var'))という式は、変数がnullまたは空文字のときにtrueを返しますが、空白スペース「 」が入っているとfalseになります。このようなデータ型の認識違いが、条件判定の想定外を引き起こします。
関数の使い方と評価順序
条件式でよく使われる関数にはempty、equals、lengthなどがありますが、それぞれの挙動を正しく理解していないと誤判定が生じます。例えば@equals(variables('var'), '')は変数が空文字の場合のみtrueで、nullではfalseです。一方@empty(variables('var'))はnullも空文字もtrueと判定します。この違いを意識せずに実装すると、条件が想定どおりに分岐しません。
トリガー出力の型変換
外部サービス(SharePoint、Outlook、SQL Serverなど)から取得した値は、多くの場合文字列型として扱われますが、元のデータがnullや空の場合は、Power Automate内で型が変化することがあります。たとえば、SharePointの「ユーザーまたはグループ」列の値が未設定の場合、空のオブジェクトとして渡されることがあります。このようなケースでは、emptyではなくequalsや特定のプロパティの存在確認が必要です。
DLPポリシーが条件判定に影響するケース
DLPポリシーによるコネクタ制限
組織のDLPポリシーによって、特定のコネクタ(HTTP、カスタムコネクタ、サードパーティコネクタなど)がブロックまたは制限されていると、フロー内のHTTPアクションが失敗し、その結果として変数が意図しない空白状態になることがあります。たとえば、外部APIからデータを取得するアクションがポリシーで禁止されていると、取得結果がnullになり、その後の条件判定が常にtrueやfalseに固定されてしまいます。
カスタムコネクタとHTTP要求への影響
DLPポリシーは、標準コネクタだけでなくカスタムコネクタやHTTP要求にも適用されます。条件判定に使うデータを外部から取得している場合、その通信がポリシーで遮断されると、結果が空やエラーになります。特に「実行時に接続を許可する」設定が適切でないと、フローはエラーを返さずに空白の値をセットするため、条件判定の異常に気づきにくくなります。
| DLPポリシーの状態 | 条件判定への影響例 | 対処方法 |
|---|---|---|
| 該当コネクタがブロック | アクションが実行されず、出力変数がnullになる | 管理者に許可申請、または代替コネクタに変更 |
| HTTP要求が制限(特定URLのみ許可) | 拒否された要求のレスポンスが空、またはエラーオブジェクトになる | 許可リストにURLを追加、もしくは別コネクタを使用 |
| カスタムコネクタの使用が未許可 | 接続が確立できず、トリガー/アクションの出力が空 | DLPポリシーの例外設定を依頼 |
ライセンスによる制限と条件判定への影響
プレミアムコネクタの利用可否
Power Automateには無料ライセンス(Office 365に含まれるもの)と有料ライセンス(Per User/Per Flow)があります。無料ライセンスでは使用できるコネクタが限られており、プレミアムコネクタ(HTTP、SQL Server、カスタムコネクタなど)が利用できません。そのため、外部システムとの連携が必要な条件判定がそもそも実行できず、代替手段として標準コネクタを使うとデータの取得形式が異なり、空白判定が狂うことがあります。
ライセンスごとの実行制限
ライセンスによって月間のAPI呼び出し回数や実行頻度に制限があります。制限に達するとフローが一時停止または失敗し、その途中で変数が未設定のまま後続の条件判定が行われます。また、ライセンスが期限切れや未割り当ての場合も同様の症状が発生します。
| ライセンス | プレミアムコネクタ | 実行回数/月 | 条件判定への影響例 |
|---|---|---|---|
| Office 365(無料) | 不可 | 4,000回(制限あり) | HTTPアクションが使えず、代替コネクタの出力が異なる |
| Power Automate Per User | 可 | 5,000回 | 制限超過でフロー停止、変数が中途半端な状態に |
| Power Automate Per Flow | 可 | 無制限(従量課金) | 影響少ないが、コネクタポリシーに注意 |
問題解決のための具体的な確認手順
- フローの実行履歴を確認する。 Power Automateポータルで対象フローの「実行履歴」を開き、失敗したアクションや出力値を確認します。特に、条件判定の直前のアクションで変数が想定どおりの値になっているか、エラーが発生していないかを調べてください。
- 条件式をテストする。 フロー内で「Compose」アクションを一時的に追加し、
@empty(variables('var'))や@equals(variables('var'), null)などの結果を出力して、実際の判定結果をログに残します。これにより、どの関数が正しい挙動をしているか特定できます。 - データ型を明示的に変換する。 型の不一致が疑われる場合、
string()関数やfloat()関数を使って明示的に型変換を行ってから条件判定を実施します。たとえば、@empty(string(variables('var')))とすることで、nullも空文字も文字列として処理できます。 - DLPポリシーの影響を確認する。 Power Platform管理センターにアクセスし、自分の環境が所属する「環境」のDLPポリシーを確認します(管理者権限が必要な場合は管理者に依頼)。特に、フローで使用しているコネクタがブロックまたは制限されていないかをチェックします。
- ライセンスの割り当て状態を確認する。 Microsoft 365管理センターで、自分またはフロー所有者にPower Automateの適切なライセンスが割り当てられているか確認します。無料ライセンスの場合はプレミアムコネクタが使えないため、代替案を検討します。
- DLPポリシーの例外設定を申請する。 どうしても特定のコネクタが必要な場合、IT管理者に対してDLPポリシーの例外設定(特定の環境やユーザーに対する許可)を依頼します。申請時には、どのコネクタをどのような目的で使用するのかを明確に伝えてください。
管理者に確認すべき設定
- DLPポリシーの一覧と適用範囲: 現在の環境に適用されているDLPポリシーの内容、特に使用したいコネクタがブロックまたは制限されていないか。
- カスタムコネクタの登録可否: カスタムコネクタが必要な場合、組織でその作成・使用が許可されているか。また、DLPポリシーの例外として登録可能か。
- ライセンスの種類と割り当て状況: フロー作成者および実行ユーザーにPower Automateのどのライセンス(無料/有料)が割り当てられているか。有料ライセンスが必要な場合は、その申請手順。
- Power Platform環境のデフォルト設定: 環境ごとにデータグループの分類やコネクタの既定の動作が異なる場合があるため、該当環境の設定を確認。
- 監査ログの取得: DLPポリシー違反のログやフローエラーの詳細を確認できるかどうか。問題の切り分けに役立つことがあります。
よくある質問(FAQ)
- Q: 条件式で「式が無効です」とエラーが出るのですが、どうすればいいですか? A: 式の構文が間違っている可能性が高いです。特に、@記号の有無や引用符の使い方を再確認してください。また、変数名や関数名のスペルミスもよくある原因です。簡単な式(
@trueなど)を入れて動作するかテストしてみてください。 - Q: DLPポリシーを自分で変更できますか? A: 通常、DLPポリシーの作成・変更はPower Platform管理者またはグローバル管理者にしか権限がありません。変更が必要な場合は、IT部門に理由を説明して依頼してください。
- Q: ライセンスをアップグレードするとどのように条件判定が改善しますか? A: 有料ライセンスではプレミアムコネクタが使えるようになり、HTTPアクションやデータベース接続が可能になります。これにより、より正確なデータ取得と安定した条件判定が期待できます。また、実行制限も緩和されるため、フロー途中で停止するリスクが減ります。
- Q: 空白スペース(半角スペース)を空白として扱うにはどうすればよいですか? A:
trim()関数で前後の空白を取り除いてから判定します。例:@empty(trim(variables('var')))とすると、空白だけの文字列も空とみなします。 - Q: 同じフローが他のユーザーでは動くのに自分だけ動かない場合、何を確認すべきですか? A: まずはDLPポリシーがユーザー単位で異なる適用をされていないか確認します。次に、自分に適切なライセンスが割り当てられているか、コネクタの接続設定が正しいかをチェックしてください。特に、共有コネクタの資格情報が個人のものになっていないか注意が必要です。
まとめ
Power Automateで空白値の条件判定が想定どおり進まない場合、データ型の認識違いや関数の選び方が原因であることが多いですが、組織のDLPポリシーやライセンス制限が背景にあるケースも少なくありません。まずはフローの実行履歴とコンポーズを活用して実際の値を確認し、条件式をデバッグすることが第一歩です。それでも解決しない場合は、DLPポリシーで必要なコネクタがブロックされていないか、自分のライセンスで十分な権限があるかを管理者と一緒に確認してください。根本原因を特定できれば、適切なポリシー設定やライセンスアップグレードによって、安定したフロー運用が可能になります。
ADVERTISEMENT
超解決 第一編集部
疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。
Office・仕事術の人気記事ランキング
- 【Outlook】添付ファイルが「Winmail.dat」に化ける!受信側が困らない送信設定
- 【神技】保存せずに閉じたExcel・Wordファイルを復元する!消えたデータを復活させる4つの救出法
- 【Teams】メッセージを「保存済み」にして後で読む!重要なチャットをブックマークして整理する技
- 【Word】差し込み印刷で数字の桁を整える!金額にカンマ(桁区切り)を入れる設定
- 【Word】校閲機能の基本!赤字(変更履歴)とコメントで修正を見える化する
- 【PDF】PDFに入力した文字の「フォント・サイズ・色」を変更するプロパティ設定
- 【PDF】結合するPDFの「用紙サイズ」がバラバラな時、すべてを「A4サイズ」に強制リサイズしてから結合する
- 【Excel】矢印キーで「セルが動かず画面がスクロールする」!ScrollLockの解除方法(ノートPC対応)
- 【Teams】会議の「参加者リスト」を出席後にダウンロードする!誰が参加したか確認する手順
- 【Teams】画面共有時に「音声」も共有する方法!音が流れない時の設定手順
