Microsoftが提供するPower Automateは、ノーコーディング、ローコーディングでフローを作成するRPAツールです。
この記事では、Power Automateで、文字列変数が空(null)であるか否かの判定方法についてまとめます。

課題:Power AutomateでNULLをどのように扱うか?

coffee 700x700 with name

Power AutomateでExcelからデータを取得するフローを作っています。
そして、何も書かれていないセルがないかをチェックします。

その場合、Excelから取得したデータが空(null)であるかどうかを判定しなければなりませんね。

cocoa 700x700 with name
coffee 700x700 with name

Power Automateで空(null)を判定するにはどのようにすれば良いでしょうか。


解決策

empty関数

empty関数は、オブジェクト、配列、文字列が空(null)の場合は trueを返す関数です。 使い方は次の通りです。

empty(variables(‘変数名’))

この場合、変数の値がnullであればtrueを返します
また、変数の値がnullでなければfalseを返します。
そのため、「条件」アクションでempty関数の返値をtrueまたはfalseと比較演算することで、文字列変数の値がnullであるか否かを判定することができます。


length関数

length関数は、文字列の長さ または 配列内の項目の数を返す関数です。
使い方は次の通りです。

Length(variables(‘変数名’))

この場合、変数の値がnullであれば0を返します
また、変数の値がnullでなければ0より大きい値を返します。
そのため、「条件」アクションでlength関数の返値を0と比較演算することで、文字列変数の値がnullであるか否かを判定することができます。


事例

Power Automateの「表内に存在する行を一覧表示」アクションを使って、Excelのテーブルを1行ずつ取得して処理するフローがあるとします。
0-01 apply to each

以下の例では、取得した値(この事例の場合 変数「期限」)、がnullのときに無視する条件を追加します。

「条件」の 追加 → 行の追加 をクリックします。
0-02 add line


empty関数を使う場合

「条件」の左の欄に次の式をExpressionから入力します。

empty(items('Apply_to_each')?['期限'])

emptyへ渡す items('Apply_to_each')?[期限] は、Excelテーブルの項目「期限」から取得した値です。
入力は、まずExpressionの欄にemptyと入力し、次に下方にある「表内に存在する行を一覧表示」の「期限」をクリックして行います。
1-02 empty


真ん中は「次の値に等しくない」を選択します。
1-03 operator

「条件」の右の欄に次の式をExpressionから入力します。

true
1-04 true


以上で、変数の値がnullであればFalseとなる条件が追加されました。
すなわち、変数「期限」の値が空ならば、「条件」アクションの「いいえの場合」が実行されます。1-05 condition

length関数を使う場合

「条件」の左の欄に次の式をExpressionから入力します。

length(items('Apply_to_each')?['期限'])
lengthへ渡す items('Apply_to_each')?[期限] は、Excelテーブルの項目「期限」から取得した値です。

入力は、まずExpressionの欄にlengthと入力し、次に下方にある「表内に存在する行を一覧表示」の「期限」をクリックして行います。
2-02 length


真ん中は「次の値に等しくない」を選択します。
2-03 operator


「条件」の右の欄に0を入力します。
2-04 zero


以上で、変数の値がnullであればFalseとなる条件が追加されました。
すなわち、変数「期限」の値が空ならば、「条件」アクションの「いいえの場合」が実行されます。2-05 condition

nullについて

調べたところ、文字列変数がnullか否かを判定する方法として、Expressionから「null」を入力すれば良い、という情報がありました。
しかし、実装してみたところ、エラーは出ないものの、予期しない動作をしました。
そのため、この「null」の使用は推奨しないと言わざるを得ません。
3-01 null


まとめ

文字列変数がnullであるか否かを判定する場合、empty関数またはlength関数を使います。
文字列変数とnullとを比較する方法もあるらしいですが、実装してみると予期しない動作をしました。


参考