Power Automateのトリガー「Power Apps(V2)」のオプション引数の使い方で少しハマったのでメモ。
オプション引数
Power Apps(V2)トリガーで設定できる引数は「オプション(任意)」にすることができる。
「・・・」メニューから「フィールドをオプションにします」を選択することで、フローを呼び出すときに「設定してもいいし、設定しなくてもOK」の任意引数にすることができる。
今回そのオプション引数を使って、引数「str」が設定されていたらその文字列を、引数「str」が設定されていなければ(nullのときは)その旨をメッセージで返す、みたいなフローを作ってみた。
引数ありで呼び出すと無事動作
まずはこのフローをPower Apps側から「引数あり」で呼び出してみると、
こんな感じで無事動作。
引数を設定しないで呼び出すとエラーが発生
引数ありでうまくいったので、今度は引数を消して(引数なしで)呼び出してみると、
なんとエラーが発生。。。
Power Automate側でエラーを確認してみると以下のようなメッセージが返ってきている。
The template language expression ‘triggerBody()[‘text’]’ cannot be evaluated because property ‘text’ cannot be selected.
要は引数「str(実名はtext)」が評価できなかった、みたいな内容だけど解決方法がわからず。。。
対処方法「?」演算子を使用する
解決方法を探していたら以下の記事を発見。
Button Flow Optional Parameters
I have a button flow that accepts two parameters. Both parameters are optional. InspectionId (int) and InspectionMonth (...
記事を見てみると、オプション引数を参照するときのtriggerBodyの式に「?」演算子を入れてあげればよいと書かれている。
triggerBody()[‘フロー上の引数名’]
ではなくて、
triggerBody()?[‘フロー上の引数名’]
triggerBody()[‘フロー上の引数名’]
ではなくて、
triggerBody()?[‘フロー上の引数名’]
ということで引数「str」を呼び出す式に
「?」演算子を追加。
フローを保存して、再度実行してみると、
無事動作した!
JSONにおける「?」演算子
?の有無で何が変わるのかわからなかったのでいろいろと調べてみたら、どうやらJSONの記述に?演算子を使うと参照されているフィールドが存在しない場合に「エラー」ではなく「null」を返すようにしてくれるらしい。
そこで今回引数を設定しないで呼び出したとき、フロー内でエラーではなく「null」として処理したのでPower Automateが正常に動作したよう。
ということでJSONにおける?演算子の有無は、Power Automateなどに大きな影響を与えるということがわかった。
コメント