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(チェックしたい値, 空だったときの代替値)

動きはこうなります。
たとえば、「SharePointの『備考』列が空だったら『なし』と表示したい」という場合はこう書きます。
coalesce(item()?['備考'], 'なし')
備考列に値が入っていればその値が、空欄なら「なし」という文字が返ってきます。
たったこれだけで、nullによるエラーを防げます。
item()?['列名'] の ? は「値が存在しなくてもエラーにしない」という書き方です。SharePointの動的コンテンツを使うときによく出てきます。覚えておくと便利ですよ。
if() と coalesce の比較
同じことを if() 関数で書くと少し長くなります。coalesce を使うと、同じ処理をずっとスッキリ書けます。
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 をつける」くらいの気持ちでも大丈夫です。

まとめ
今回は Power Automate の coalesce 関数について解説しました。
📋 この記事で学んだこと
→ 次に読む記事:「【Vol.29】Power Automate:if()関数で条件分岐をシンプルに書く」
coalesce はシンプルながらとても強力な関数です。
「nullのせいで止まるフロー」に悩んでいる方は、ぜひ一度使ってみてください。
きっとフローが格段に安定するはずです。


コメント