first()で Apply to each ループ回避する【Power Automate】
Power Automate クラウドフロー で SharePoint コネクタの [ 複数の項目の取得 ] アクションを使用したとき、対象が1件のみのユニークなキーで取得した場合でも、Apply to each が自動で作成されてしまいます。
結果は1件だけだとわかっているとき、Apply to each が入ってくるのはうざいです。
解消方法
Apply to each を使わずに最初の1件だけ取得したい、扱いたい場合、first()関数を使用します。
以前の手順から出力を選択 の部分をコピーします。
すると、このようになっています。
@{outputs('複数の項目の取得')?['body/value']} |
上記の、@{}の中を利用します。
outputs('複数の項目の取得')?['body/value'] |
これを、first()の中に入れれば、配列の1つ目の要素を指定する(取得する)ことができます。
first(outputs('複数の項目の取得')?['body/value']) |
抜き出すこと自体は作成アクションでもできますが、のちの手順で動的な値を使いたい場合は、JSONの解析アクションが適しています。
適切なスキーマを指定して利用しましょう。
補足
ちなみに、レコードが取得できなかった場合、null が入ってきます。
レコードがない状態で[ JSONの解析 ]に入るとエラーが出てしまうので(書き方によっては回避できるかもですが)値が取得できない可能性がある場合は、条件分岐で null かどうか判定してから処理していきましょう。