【Power Automate】null値の扱いを設定する時に管理画面で見るべき項目

【Power Automate】null値の扱いを設定する時に管理画面で見るべき項目
🛡️ 超解決

Power Automateでフローを作成していると、null値が原因で意図しない動作やエラーが発生することがあります。特に、SharePointやDataverse、Excelなどから取得したデータが空の場合に、条件分岐や変数代入で予期せぬ結果になるケースが多く見られます。この記事では、null値の扱いでつまずいたときに、Power Automateの管理画面でどのような項目を確認すればよいのかを具体的に解説します。実際の画面の見方や設定変更のポイントを押さえることで、トラブルを素早く解決できるようになります。

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

  • 最初に見る場所: フローの実行履歴と動的コンテンツの出力型。null値がどのように表示されているか、データ型は文字列かオブジェクトかを確認します。
  • 切り分けの軸: トリガーやアクションの出力元(SharePoint、Excel、Formsなど)と、条件式や関数内でのnull処理の有無。管理画面の設定(例:データ損失防止ポリシー)が原因でnullが強制される可能性も考慮します。
  • 注意点: 会社のポリシーでカスタムコネクタや特定の関数が制限されている場合があります。勝手に変更せず、管理者に確認しながら進めてください。

ADVERTISEMENT

Power Automateにおけるnull値の基本と問題の概要

Power Automateでは、各アクションの出力がnullになることがあります。nullとは「値が存在しない」状態を指し、空文字列(“>””)や0とは異なる特別な値です。たとえば、SharePointリストで「値なし」の列を取得したり、フォームの回答が未入力だった場合にnullが返ります。このnullをそのまま条件式で使うと、比較演算子で意図しない結果になったり、フローがエラーで停止したりします。原因を特定するには、管理画面の「実行履歴」で各アクションの入出力を確認することが第一歩です。

null値が原因で発生する代表的なエラー

null値によって発生するエラーには以下のようなものがあります。

  • 式の評価エラー: 条件式の中で「変数Aが1と等しい」と書いたとき、変数Aがnullだと等しくないと判断されます。また、nullに対して文字列操作を行うと「オブジェクト参照がオブジェクト インスタンスに設定されていません」のようなエラーが出ます。
  • アクションのスキップ: 条件分岐でnullが原因でfalseになり、意図したアクションが実行されないことがあります。
  • データ型の不一致: 数値が期待される場所にnullが渡されると、変換できずにフローが失敗します。

これらの問題を解決するには、管理画面のいくつかの項目を重点的に確認する必要があります。

管理画面で最初に確認すべき3つの項目

null値のトラブルが発生した際、最初に以下の3つの項目を管理画面で確認してください。

1. フローの実行履歴でのnull値の表示

Power Automateの管理画面(make.powerautomate.com)で、該当フローの「実行履歴」を開きます。問題が発生した実行を選択し、各アクションの「入力」と「出力」を確認します。出力の中にnullと表示されている項目がないか探してください。たとえば、SharePointの「アイテムの取得」アクションで、特定の列の値がnullになっている場合、それが原因です。また、JSONビューで見るとさらに詳細がわかります。「出力」の横にある「{}」アイコンをクリックすると生のJSONが表示され、nullがどの階層で発生しているか確認できます。

2. 動的コンテンツの出力型

フローエディターで、アクションの出力を動的コンテンツとして利用するとき、そのデータ型を確認しましょう。動的コンテンツピッカーで項目を選択すると、その横にデータ型が表示されます(例:「文字列」「整数」「オブジェクト」)。nullが含まれる可能性がある場合、データ型が「オブジェクト」になっていることが多いです。たとえば、SharePointの「人物またはグループ」列は、値が空でも空のオブジェクトではなくnullを返します。このような場合、後述の関数を使って明示的にnullチェックを行う必要があります。

3. 条件式でのnullチェックの設定

条件アクションやスイッチアクション内の式を見直します。Power Automateの条件式では、@equals(variables('var'), null)のように明示的にnullと比較できます。管理画面の「条件」アクションを開き、右側の式エディタで現在の式を確認します。よくあるミスとして、@empty(variables('var'))を使ってしまうケースがあります。empty()関数は空文字列や空の配列に対してtrueを返しますが、nullに対してはtrueを返しません(nullは空ではないため)。正しくは@equals(variables('var'), null)または@if(equals(variables('var'), null), true, false)のような書き方をします。

null値が原因で発生する典型的な失敗パターン

実際の業務でよく見られる失敗パターンとその対策を表にまとめました。

失敗パターン 症状 原因 管理画面で確認すべき項目
SharePointの「選択肢」列が空の場合、条件分岐が期待通りにならない 条件式で「列の値が〇〇と等しい」がfalseになり、別の処理に進んでしまう 列の値がnullであるにもかかわらず、空文字列と比較している 実行履歴の出力、条件式の「等しい」の設定
Microsoft Formsの回答が未入力の場合、メール通知にnullと表示される メール本文に「null」という文字列がそのまま挿入される 動的コンテンツをそのまま使っており、nullを空文字に変換していない メールアクションの本文内の動的コンテンツ、式の使用有無
Dataverseのテーブルから取得した数値がnullの場合、計算アクションでエラー フローがエラーで停止し、「式の評価に失敗しました」と表示される 数値としてnullを加算・減算しようとした 実行履歴の出力、変数初期化時のデータ型、条件アクションの追加
配列内のアイテムにnullが含まれ、フィルターやループで予期せぬ動作 ループ内で処理しようとしたらエラー、または特定のアイテムが無視される 配列の一部要素がnullで、アクションがnullを処理できない 「JSONの解析」アクションのスキーマ、ループ内の条件

これらのパターンを見ると、いずれの場合も管理画面で実行履歴と条件式を確認することが重要だと分かります。

管理画面の設定変更が必要なケースとその手順

null値を適切に扱うために、フロー自体の設定変更が必要なケースがあります。ここでは、特に有効な3つの方法を手順とともに紹介します。

方法1:条件アクションで明示的にnullチェックを追加する

  1. フローエディターで、nullの発生が予想されるアクションの後に「条件」アクションを追加します。
  2. 条件の左側に、nullチェックしたい動的コンテンツ(例:SharePointの列値)を選択します。
  3. 演算子のドロップダウンから「次の値に等しい」を選び、右側の値に「null」と入力します。Power Automateの条件では、直接「null」と文字で入力することでnullと比較できます。
  4. 「はいの場合」と「いいえの場合」にそれぞれ適切なアクションを配置します。nullの場合は代替値を設定するなどします。
  5. 保存してフローをテスト実行し、nullが正しくハンドリングされていることを確認します。

方法2:式でcoalesce関数を使ってnullを空文字列に変換する

  1. メール送信や変数代入など、nullを直接使いたくないアクションを開きます。
  2. 該当の動的コンテンツが設定されているフィールドをクリックし、「式」タブを選択します。
  3. 式エディタにcoalesce(outputs('アクション名')?['列名'], '')と入力します。これにより、値がnullの場合は空文字列に置き換えられます。
  4. アクション名の部分は実際のアクションの識別名に置き換えてください。動的コンテンツピッカーで選択した式をコピーして編集すると確実です。
  5. 保存してテストし、nullが空文字に変換されていることを実行履歴で確認します。

方法3:変数の初期化時にnullを考慮したデフォルト値を設定する

  1. フロー内で変数を初期化する「変数を初期化する」アクションを追加します。
  2. 種類を適切に設定し(例:文字列の場合は文字列)、値にnullが返る可能性がある場合は、coalesce(動的コンテンツ, 'デフォルト値')を設定します。
  3. たとえば、「承認」アクションの結果がnullになる可能性がある場合、変数にその結果を代入する前にcoalesceを使ってデフォルト値を入れます。
  4. フロー内で変数を参照するすべての場所で、nullではなくデフォルト値が使われるようになります。
  5. この方法は、複数のアクションで同じnull値を扱う場合に特に有効です。

管理者に確認すべきポリシーと環境設定

null値の扱いに関するトラブルの一部は、管理者側の設定が原因になっていることがあります。以下のポイントを管理者に確認してみてください。

データ損失防止ポリシー(DLP)の影響

Power Automateの管理センターで設定されているDLPポリシーによって、特定のコネクタやデータの種類が制限されている場合があります。たとえば、ビジネスデータと非ビジネスデータの混在を禁止するポリシーが有効だと、null値の扱いに関係なくフローがエラーになることがあります。該当フローがDLPポリシーに違反していないか、管理者に確認してください。違反している場合、null値を含むデータが正しく渡されず、エラーになることがあります。

カスタムコネクタやAPIのnull許容設定

社内で開発したカスタムコネクタや外部APIを利用している場合、そのAPIの仕様でnullが許容されていない可能性があります。たとえば、必須パラメーターにnullが渡されるとAPI側でエラーを返し、フローが失敗します。管理者にAPIのドキュメントやスキーマを確認してもらい、null値を送信しないようにフローを修正する必要があります。また、コネクタの設定画面で「Null 値を許可する」のようなオプションがある場合は、それを有効にすることで問題が解決することもあります。

よくある質問(FAQ)

null値に関する質問でよく寄せられるものをまとめました。

  • Q. 条件式で「次の値に等しい」を選んでもnullと比較できません。どうすればいいですか?
    A. Power Automateの条件アクションでは、右側の値に直接「null」と入力することでnullと比較できます。ただし、小文字のnullである必要があります。また、動的コンテンツの「null」を選択するのではなく、手動で文字列「null」を入力してください。
  • Q. empty関数とnullの違いは何ですか?
    A. empty()関数は、空文字列(“”)、空の配列([])、空のオブジェクト({})に対してtrueを返します。nullは「空」ではなく「値が存在しない」状態なので、empty(null)はfalseになります。nullチェックにはequals(variable, null)を使用してください。
  • Q. 実行履歴でnullが「{ }」のように表示される場合があります。これはnullですか?
    A. 空のオブジェクト({})とnullは異なります。実行履歴の出力でnullと明示的に表示されていなければ、nullではありません。空のオブジェクトはプロパティを持たないオブジェクトであり、nullとは区別して扱う必要があります。
  • Q. フローが急にnullエラーで止まるようになりました。前は動いていたのに。何を確認すれば?
    A. データソース側の仕様変更や、列の値が空になった可能性があります。まず実行履歴でどのアクションがエラーになっているかを確認し、そのアクションの出力を調べてください。また、管理者に連絡してデータソースの変更がないか確認しましょう。

まとめ

Power Automateでnull値に悩んだときは、管理画面の実行履歴で各アクションの出力を詳細に確認することが最も重要です。nullがどのアクションで発生しているか、データ型は何かを見極めることで、適切な対処が可能になります。条件式ではequalscoalesceを活用し、nullを明示的に処理するようにしてください。また、会社のポリシーやAPIの仕様が原因である可能性も考慮し、必要に応じて管理者に相談しましょう。これらの手順を踏めば、null値のトラブルを効率的に解決できるはずです。


この記事の監修者
✍️

超解決 第一編集部

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