Power Automateで「金額が1万円以上のときだけ承認に回す」「担当者が空欄の行だけ処理する」といった場合分けをしたいとき、使うのが条件アクションです。

ただ、使い始めると次のような壁にぶつかります。

  • 空欄かどうかを判定したいが、うまくいかない
  • 条件を3つ以上に分けたい
  • 「かつ」「または」の組み合わせ方が分からない

この記事では、条件の基本から公式の関数一覧、そして空白判定の実際の書き方までをまとめます。

条件とは?基本は「はい」と「いいえ」の2つ

Microsoftの公式ドキュメントでは、条件の役割がこう説明されています。

条件を使用して、条件が true または false の場合にのみクラウド フローが 1 つ以上のタスクを実行するように指定します

ポイントは分岐が2つしかないことです。条件を追加すると、フローは次の2本に分かれます。

  • はいの場合(True)…条件を満たしたとき
  • いいえの場合(False)…満たさなかったとき

どちらか一方だけを使うこともできます。「条件に合ったときだけ通知する」なら、いいえの側は空のままで構いません。

基本の使い方|3つのボックスを埋めるだけ

条件カードには入力欄が3つあります。左から順に埋めていきます。

位置入れるもの例
左比べたい値(動的なコンテンツ)リツイート数
中央比べ方(演算子)次の値以上
右比べる相手10

公式のチュートリアルでは「リツイート数が10以上ならメールを送る」という例が示されています。左に項目、中央に「次の値以上」、右に10を入れる——この形が基本です。

複数の条件を並べたいときは、公式にこう案内されています。

条件カードの 追加 ボタンで複雑な条件を作成することができます

「追加」を押すと行が増え、AND(かつ)/OR(または)を選べるようになります。

条件式で使える関数一覧

画面のボックスだけでは表現しきれない条件は、式(関数)で書きます。公式が挙げている論理式は次のとおりです。

式意味公式の例
and両方がtrueならtrueand(greater(1,10),equals(0,0)) → false
orどちらかがtrueならtrueor(greater(1,10),equals(0,0)) → true
equals等しければtrueequals(parameters(‘parameter1’), ‘someValue’)
lessより小さいless(10,100) → true
lessOrEquals以下lessOrEquals(10,10) → true
greaterより大きいgreater(10,10) → false
greaterOrEquals以上greaterOrEquals(10,100) → false
empty空ならtrueempty(”) → true
not逆にするnot(contains(‘200 Success’,’Fail’)) → true
if真偽で値を返すif(equals(1, 1), ‘yes’, ‘no’) → yes

使ううえで公式が注意している点が2つあります。

  • and / or…「両方の引数をブール値にする必要があります」。つまり中身も真偽を返す式であること
  • less / greater 系…「サポートされる型は整数、浮動小数点数、文字列です」

【頻出】空欄かどうかを判定する

もっとも質問が多いのが「空白なら」の判定です。答えはempty関数を使うことです。

公式では、empty について次のように説明されています。

オブジェクト、配列、文字列が空の場合は true を返します

公式チュートリアルには、スプレッドシートの空の行を削除する実例が載っています。「状態」列と「割り当て済み」列の両方が空の行を見つける式です。

@and(empty(item()?['Status']), empty(item()?['Assigned']))

この式は詳細設定モード(式を直接書くモード)で入力します。通常の3つのボックスでは、こうした関数を組み合わせた判定はできません。

逆に「空欄でないなら」を判定したい場合は、notと組み合わせます。「空である」の逆を取ればよいわけです。

条件を3つ以上に分けたいとき

前述のとおり、条件アクションは「はい」と「いいえ」の2分岐しかありません。「A・B・Cの3パターンで処理を分けたい」という場合は、次の方法をとります。

方法内容向いている場面
条件を入れ子にする「いいえの場合」の中に、さらに条件を置く分岐が3〜4個。判定内容がそれぞれ違う
スイッチを使う1つの項目の値によって行き先を分ける「状態」列がA/B/Cのように値で決まる場合

判定する項目が同じなら「スイッチ」、条件がバラバラなら「入れ子」と覚えておくと選びやすくなります。

ただし入れ子は深くなるほど読みにくくなります。3階層を超えるようなら、フローを分割することも検討してください。

実例:期日が近く、未払いの人にだけメールを送る

公式に載っている、実務的で分かりやすい例です。2つの条件を同時に満たす人を探します。

判定したいこと使う式
全額が支払われていないgreater(請求額 > 支払額)
期日まで1日を切っているless(期日 < 明日)

この2つをandでつなぐと、次の式になります。

@and(greater(item()?['Due'], item()?['Paid']), less(item()?['dueDate'], addDays(utcNow(),1)))

utcNow()が現在時刻、addDays(utcNow(),1)が明日を表します。「期日が明日より前」=「あと1日を切っている」という考え方です。

日付を扱う条件は、この形が基本になります。

よくあるつまずき

症状原因と対処
空欄が判定できないボックスに空文字を入れても効かないことがある。empty関数を使う
andやorがエラーになる中身がブール値になっていない。equalsなど真偽を返す式で包む
数値の大小が正しく判定されない値が文字列として扱われている可能性。型を確認する
3つ以上に分けられない条件は2分岐のみ。入れ子かスイッチを使う
どちらの分岐に入ったか分からない実行履歴を開けば、通った経路が確認できる

よくある質問

Q. 「いいえの場合」は空でも大丈夫ですか?

問題ありません。条件を満たしたときだけ処理したい場合は、いいえ側を空のままにします。

Q. 文字列が「含まれるか」を判定できますか?

できます。中央の演算子に「次の値を含む」があるほか、式ではcontainsを使います。公式のnotの例もcontainsと組み合わせたものです。

Q. 詳細設定モードとは何ですか?

3つのボックスの代わりに、式を直接書くモードです。empty や and を組み合わせた複雑な判定は、こちらで入力します。

Q. 条件の中で変数を使えますか?

使えます。ただし変数を条件の中で作ることはできません。初期化はフローの外側で行う必要があります。詳しくは変数の使い方をご覧ください。

まとめ

  • 条件は「はい」「いいえ」の2分岐だけ
  • 基本は3つのボックス(値・比べ方・相手)を埋める
  • 複数条件は追加ボタンでAND/ORを組む
  • 空欄の判定はempty関数。ボックスでは判定しにくい
  • and / or は中身がブール値である必要がある
  • 大小比較は整数・浮動小数点数・文字列に対応
  • 3つ以上に分けるなら入れ子かスイッチ
  • 日付の比較はaddDays(utcNow(),1)のような式で組み立てる

条件が思ったとおりに動かないときは、まず実行履歴を開いてください。左右のボックスに実際どんな値が入っていたかが分かり、原因の大半はそこで判明します。

Power Automateの全体像はPower Automateとは?できること・始め方で解説しています。

参考にした主な資料

ABOUT ME
IT解決チャンネル編集部
ExcelやWord、Windows、Googleスプレッドシートなど、ビジネスで使うITツールの使い方を初心者にもわかりやすく解説しています。関数の使い方から実務で役立つ応用テクニックまで、画像付きでていねいに紹介。パソコン操作で困ったときの頼れる情報源を目指しています。