【Vol.30】Power Automate:空欄のせいでフローが止まる問題を coalesce で解決する

Power Automate 実践・Tips
★☆☆ 入門 ⏱ 5分で読める 🎯 null対策

Power Automateでフローを作っていると、「なぜか特定の条件のときだけエラーになる」という経験、ありませんか?

多くの場合、その原因は「空欄(null)が渡っている」ことです。

入力フォームの任意項目が空のまま送信された、SharePointのリスト列に値が入っていない、Excelのセルが未入力だった——こういった場面でフローがエラーになるのをよく見かけます。

今回紹介する coalesce 関数は、まさにこの問題を一行で解決できる便利な関数です。
はじめての方でも使いやすいので、ぜひ覚えておいてほしい関数のひとつです。

そもそも「null(ヌル)」って何?

📌 ここがポイント

「null」とは「何も入っていない」という状態を表す特別な値です。
空文字(””)とは別物で、「そもそもデータが存在しない」ことを意味します。

例)SharePointのリスト列に何も入力されていない → その列の値が null になる

Power Automateでは、nullの値を別のアクションに渡すと、エラーになったり予期しない動作をすることがあります。

「フローはちゃんと動いているはずなのに、特定の申請だけエラーになる」という場合、nullが原因であることが非常に多いです。

これを防ぐために「nullだったら別の値を使う」という処理が必要になります。
それをスッキリ書けるのが coalesce 関数です。

空欄が原因のトラブル、こんな場面ありませんか?

具体的にどんな場面でトラブルが起きるか、イメージしてみましょう。

  • SharePoint の列が空 → null が渡って後続処理でエラー
  • Excel のセルが空 → 計算結果が崩れる、またはフローが止まる
  • JSON のキーが存在しない → undefined でフローが停止
  • フォームの任意項目が未入力 → ファイル名の一部が空になって「__.xlsx」のようなファイルが生成される

このように、空欄(null)は見た目には気づきにくいのに、フローを止める原因になります。

しかも「Aさんの申請はOKでBさんの申請だけエラー」というパターンが多く、原因を突き止めるまでに時間がかかることもあります。

coalesce 関数とは

一言で覚えるなら「空だったらこっちを使って」関数です。

書き方はとてもシンプルです。

coalesce(チェックしたい値, 空だったときの代替値)
最初は難しく感じるかもしれませんが、使い方のパターンを覚えてしまえばあとはコピペで応用できます。

動きはこうなります。

coalesce の動き
チェックしたい値
null または空?
Yes(空のとき)
代替値を返す ✓
No(値があるとき)
そのまま返す ✓

たとえば、「SharePointの『備考』列が空だったら『なし』と表示したい」という場合はこう書きます。

coalesce(item()?['備考'], 'なし')

備考列に値が入っていればその値が、空欄なら「なし」という文字が返ってきます。
たったこれだけで、nullによるエラーを防げます。

💡 ポイント

item()?['列名']? は「値が存在しなくてもエラーにしない」という書き方です。
SharePointの動的コンテンツを使うときによく出てきます。覚えておくと便利ですよ。

if() と coalesce の比較

同じことを if() 関数で書くと少し長くなります。
coalesce を使うと、同じ処理をずっとスッキリ書けます。

書き方の比較

❌ if() を使った場合(少し長い)

if(equals(variables('name'), ''), '名称なし', variables('name'))

✅ coalesce を使った場合(スッキリ!)

coalesce(variables('name'), '名称なし')

 

if() を使う場合、「equals で空文字かどうかを確認して、trueなら代替値、falseなら元の値」という書き方になります。


これはこれで正しいのですが、慣れるまでは少し読みにくいですよね。

coalesce を使えば「nullまたは空だったら代替値を使う」という意図が一目でわかる書き方になります。
コードをあとから見返したときも、何をしているのかがすぐに分かります。

実務での使いどころ

実際の業務でよく使う場面を3つ紹介します。
コードを見ながら「どういう状況で使うのか」をイメージしてみてください。

① SharePoint リストの空列対応

SharePointのリストを「複数の項目の取得」アクションで取得するとき、列の値が空のレコードが混ざっていることがあります。

たとえば「タイトル」列が空のレコードをそのまま処理すると、後続のアクションでエラーになる場合があります。
coalesce で「空だったらハイフンを入れる」と設定することで、エラーを防ぎつつデータを整えられます。

coalesce(item()?['Title'], '-')

② Excelの空セルを数値として扱う

Excelのデータを取り込んで集計するフローでは、空のセルが null になり、数値計算でエラーになることがあります。

たとえば「金額」列が空の行が含まれる場合、coalesce で「空なら 0 を使う」と指定すれば、計算が止まらずに済みます。
集計フローを作るときはほぼ必須の書き方です。

coalesce(item()?['金額'], 0)

③ JSONのキー欠損に対応

HTTPアクションで外部APIのレスポンスを受け取るとき、条件によってはキーそのものが存在しないことがあります。

たとえば、APIの返り値に name というキーが含まれていない場合でも、coalesce を使えばエラーにならずデフォルト値で処理を続けられます。
外部APIを使う場面では特に重宝します。

coalesce(body()?['name'], '名称なし')

複数の代替値を並べることもできる

coalesce は引数を3つ以上渡すこともできます。
「最初に null でない値が見つかった時点でその値を返す」という動きになります。

coalesce(変数A, 変数B, 'デフォルト値')

① 変数Aが null でなければ → 変数A を返す

② 変数Aが null で、変数Bが null でなければ → 変数B を返す

③ 両方 null だったら → ‘デフォルト値’ を返す

「メインの値がなければサブの値を、それもなければ固定のデフォルト値を使う」という優先順位の設定に使えます。
複数のデータソースを組み合わせるフローで特に役立ちます。

concat(文字列結合)と組み合わせるときは特に注意

はじめて使う方がよくハマるのが、concat 関数の中に null が入るケースです。

たとえば、こういう書き方をしてしまうと——

concat('申請者:', triggerBody()?['applicant'])

申請者が空欄だった場合に「申請者:null」のような文字列が生成されたり、エラーになったりすることがあります。
Teamsへの通知メッセージやメールの件名を作るときに、このパターンでハマる方が多いです。

coalesce でラップするとこの問題を防げます。

concat('申請者:', coalesce(triggerBody()?['applicant'], '不明'))
💡 実務でのクセにしたいこと

「nullになりうる動的コンテンツを使う前に、coalesce でラップする」クセをつけるだけで、エラーで止まるフローが激減します。

最初のうちは「とりあえず動的コンテンツには全部 coalesce をつける」くらいの気持ちでも大丈夫です。
coalesce を入れた途端にフローが安定する感覚、ぜひ実際に確認してみてください。

まとめ

今回は Power Automate の coalesce 関数について解説しました。

📋 この記事で学んだこと

→ 次に読む記事:「【Vol.29】Power Automate:if()関数で条件分岐をシンプルに書く

coalesce はシンプルながらとても強力な関数です。
nullのせいで止まるフロー」に悩んでいる方は、ぜひ一度使ってみてください。
きっとフローが格段に安定するはずです。

\ 最新情報をチェック /

💌

最新のPower Automate Tipsを毎日チェック

1枚スライドで関数・概念をわかりやすく解説しています。

𝅧 @isamu_Automate をフォロー →

PA45 — 45分でPower Automateを一緒に学ぼう

毎週木曜夜・オンライン・無料のハンズオン講座。初心者歓迎。

次回PA45に参加する →

コメント

PAGE TOP