
Power Automate でフローを作っていると、必ずぶつかる問題があります。
「動いてると思ってたのに、急に止まる。」
原因を追うと、たいてい「null(空)」が関わっています。
SharePointの未入力列、Excelの空白セル、Formsの任意回答。
どこにでも潜んでいます。
この記事では、null によるフロー停止を防ぐ「黄金ルール」と、
実務ですぐ使える3パターンを紹介します。
X投稿
今回の内容を1枚スライドにまとめたものです。
黄金ルールとは?
スライドに書いた黄金ルールは、一行で表せます。
「null になりうる動的コンテンツを使う前に、coalesce() で null を値に置き換える」
動的コンテンツとは、SharePoint の列・フォームの回答・ユーザー情報など、
フロー実行のたびに値が変わる部分のことです。
こういった箇所は、条件によって null になる可能性があります。
null のまま使おうとすると、フローはそこで止まります。
coalesce() で包んでおけば、null でも処理を続けられます。
ビフォーアフターで見る
Apply to each の中で列の値を使う場面を例にします。
coalesce() で「包む」だけでいい。
それだけで、フローは最後まで走り切ります。

最初に覚えたとき「え、これだけ?」と思いました。
でも本当にこれだけです。動的コンテンツを使う前に coalesce()。
これをクセにするだけで、フローの止まり方が激減します。
実務での「とりあえずこれ」3選
実際のフローでよく登場するパターンを3つ紹介します。
コピペで使えるので、そのまま活用してください。
① SharePoint のテキスト列
SharePoint リストのテキスト列は未入力のとき null になります。
Teams通知・メール本文・ログ保存などで使うときは必ず包みましょう。
② Excel の数値列(計算用)
Excelの空白セルは null として返ってきます。
合計・平均・件数カウントなど、計算に使う前に 0 に変換しておくと安心です。
③ Teams通知の宛先名など(トリガー情報)
トリガーのボディから取得するユーザー情報は、
タイミングや設定によって取れないことがあります。
「不明」など分かりやすいデフォルト値を入れておくと、ログが読みやすくなります。
実際にフローを作ってみた
上記3パターンを実際のフローに組み込んでみました。
SharePoint リストを Apply to each で回して、空欄があっても止まらずに Teams 通知を送るフローです。
ポイントは Apply to each の中の「メッセージ本文」を組み立てる箇所です。
Memo 列・Amount 列をそれぞれ coalesce() で包んでいます。
これだけで、どの行が空でも最後まで止まらずに動きます。
使いどころには注意も必要
ただし、エラーが見えなくなってしまうという副作用があります。
- 表示・通知・ログ・集計 → 積極的に使ってOK
- 条件分岐・承認判断・業務ロジックの中核 → 一度立ち止まる
「本当に空なのか」「取得に失敗したのか」が区別できなくなるため

「フローが止まらなくなった!」と喜んでいたら、
実はデータ取得がずっと失敗していた、ということが実際にありました。
coalesce() はあくまで「保険」。使いどころを選ぶことが大事です。
まとめ
「null かもしれない値を使う前に coalesce() で包む」を習慣にするだけで、
フローの安定性がぐっと上がります。
まずは今日紹介した3パターンから試してみてください。
📋 この記事で学んだこと
→ 次に読む記事:「【Power Automate】coalesce() は「フローを止めないための保険」〜使っていい場面/注意すべき場面を整理する〜」

コメント