9
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【#PowerAutomate Tip's】IF関数の罠

Last updated at Posted at 2020-05-04

他開発言語経験者が陥りそうな箇所だと思ったので、メモというか備忘録というか(;´Д`)

Power Automate の IF関数

他の開発言語と同様に「条件に合致するか否か」で処理を分岐する関数です。

関数リファレンス if

if(<expression>, <valueIfTrue>, <valueIfFalse>)

アクションの分岐ではなく、例えば SharePoint のリスト項目を作成する際に「Aだったら〇〇、それ以外なら××」みたいな”アクション中の動作を条件で切り替える”ための関数です。

NGパターン1:条件における式

例えば「配列の要素(アレイの中身)が1個より多い場合」という条件で分岐したい、としましょう。C# や Java の経験があると、下記のような記載をしたくなるかと思います。

if( 1 < length(<配列>), <Trueの処理>, <Falseの処理>)

はい、上記はフローでエラーになります。

01.png

見えづらいかもしれませんが、アクションの項目が赤文字になってますよね。
参考までに、Automate で配列の要素数を取得したい場合は length関数 を利用します。なので、要素数を求める関数が間違っているワケではありません。

Power Automate のエラーメッセージは具体的にドコが悪いか?の詳細が解説されない場合が多いです。なので、いったいナニが何だかってなりますよね・・・。

正しくは下記のように記述します。

if( greater(length(<配列>),1), <Trueの処理>, <Falseの処理>)

記事投稿時点では、所謂「式が持つ値」による判定ができないようです。冒頭で紹介したDocsにも記載ないので”おそらく”です・・・。IF関数の条件に指定できるのは、True・Falseの2値を返却できる関数などに限定されるように見受けられますね。
なお、”n以上”や”以下”に関しては 論理比較関数 を利用して記述します。

NGパターン2:False時の式 省略

他開発言語経験者であれば同意いただけると思うのですが「条件がTrueの時だけ〇〇の処理をして、Falseの時は何もしなくてよい」という場合、Falseの処理を省略しますよね?

if( greater(length(<配列>),1), <Trueの処理> )

上記のような感じで、他の開発言語はFalseの処理を記載しなくても問題ないモノが多いです。そして、Automate も関数を上記のように記述した時点ではエラーになりません。しかし・・・。

実行時にエラーになります(;´Д`)

02.png

エラーメッセージ抜粋はこんな感じ。

'テンプレート言語関数 'if' には次の 3 つのパラメーターが必要です: 最初のパラメーターとしてテストする条件、2 番目のパラメーターとして条件が true の場合に返される値、3 番目のパラメーターとして条件が false の場合に返される値。

とっても、わかりづらいですね・・・。Falseの時は何もしなくて良い場合であったとしても、ちゃんと省略せずに記載する必要があるよ、って言ってるみたいです。こちらも、公式の Docs には記載されていません。(とはいえ、False時が省略できる、とも書いてないのでグレーと言われれば・・・)

まとめ

  • Power Automate でも IF関数で条件分岐が可能
    • アクションの分岐ではない点に注意
  • IF関数の条件式は「1<比較対象」のような式を書くとエラーになる
    • 論理比較関数などを利用しましょう
  • Falseの条件は省略できない
    • 実行するまでエラーにならないので注意

なお、画面イメージは「試験的な機能」をオンにしています。記事投稿時点の状況なので、今後のVerUpで変更になる可能性があります。ご留意ください。
(´ω`)。○○(あえて記載する必要もないかな、と思いつつ)

まさか、Falseの場合が省略できないなんて思いもしませんでした。当方と同じ箇所で躓く方が1名でも減りますように・・・。

それでは、皆さま、素晴らしい Power Platform Life を!

9
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?