配列をループ処理したい
n8nで配列をループ処理したい時、Loopノードを使って悪戦苦闘していましたが、ずっとシンプルな方法があったため記載しておきます。
そもそもn8nでは、Loopノードを使う場面はとても限定的だそうです。
何故なら、複数アイテムに対して自動的に繰り返し処理を行う仕組みが備わっており、Loopノードを使わずとも柔軟に対応できるから。
(思えば初めて触った時、Googleスプレッドシートを読み込ませたら、各行毎にループされて、後に続くAPIまで大量に叩いてしまってヒヤッとしたことがありました...)
ただ、JSON内の配列({items:["a","b","c"]のような)を扱う場合、
JSON自体はひとつのアイテムとして処理されるので、個々のitemに分割しないといけません。
結論として、Codeノードを使って分割してやれば上手く行きました。
以下はそのサンプルコードです。
const output = []; // item出力用
const values = $input.first().json.output.values
for (const value of values) {
const item = {
"output":{
"value": value
}
} // この形式でないとn8nがitemとして認識してくれないので注意
output.push(item);
}
return output;
まとめ
配列はCodeノードを使って複数アイテムに分割してループさせよう。