生活や仕事に役立つライフハック、お得な情報を発信しています。⚠️記事内にPRを含みます

n8nのSetノードを徹底活用!複雑なデータマッピングをシンプルにする方法

n8nでワークフローを組んでいると、必ずと言っていいほど直面するのが「データ形式の壁」です。

「APIから取得したデータの名前が違う…」「必要な情報だけ抜き出したいのに…」「複数の情報を一つにまとめたい…」こんな悩みを抱えていませんか。

実は、その課題のほとんどは「Setノード」を使いこなすことで、驚くほどシンプルに解決できます。

Setノードは、単に値を設定するだけのノードではありません。

n8nにおけるデータフローを自在に操るための、いわば「データの司令塔」です。

この記事では、2025年11月時点の情報に基づき、Setノードの基本的な使い方から、複雑なデータマッピングを解決する応用テクニックまで、具体的な例を交えながら徹底的に解説します。

この記事を読み終える頃には、あなたはSetノードを完全にマスターし、面倒なデータ整形作業から解放されているはずです。

Setノードの基本を再確認!データマッピングの第一歩

まずは基本からおさらいしましょう。Setノードがn8nのワークフローでどのような役割を担っているのか、そして基本的な使い方を理解することが、応用への近道です。

Setノードとは?n8nにおける「データの司令塔」

Setノードの主な役割は、ワークフローを流れるアイテム(データ)の値を設定または追加することです。しかし、その本質はもっと奥深く、データの「構造」そのものを変換する強力な機能を持っています。例えば、以下のような操作が可能です。

  • 特定のデータ項目だけを残し、不要なものを削除する
  • 既存のデータに新しい情報を付け加える
  • APIから取得したデータのキー名を、後続のシステムで使える名前に変更する
  • 複数のノードから得た情報を、一つのまとまったデータに統合する

このように、Setノードは各ノード間を流れるデータをスムーズに連携させるための「翻訳者」であり、ワークフロー全体のデータフローを制御する「司令塔」のような存在なのです。このノードを制する者が、n8nの自動化を制すると言っても過言ではありません。

基本的な使い方 – 4つのモードを理解する

Setノードには、目的応じて使い分ける4つの主要なモードがあります。それぞれのモードの役割を理解しましょう。

  • Keep Only Set: 設定した値だけを持つ新しいアイテムを作成します。元のデータは破棄され、指定したデータだけが後続のノードに渡ります。不要な情報をそぎ落とし、ワークフローをシンプルに保ちたい場合に非常に有効です。
  • Set All: 元のデータをすべて保持したまま、新しい値を追加または上書きします。既存の情報を活用しつつ、新たな情報を付与したい場合に最もよく使われるモードです。
  • Set by Index: 配列(複数のアイテム)の特定の順番(インデックス)にあるアイテムに対して値を設定します。例えば、「2番目のアイテムのステータスだけを更新する」といった操作が可能です。
  • Set by Key: アイテム内の特定のキー(プロパティ名)を使って値を設定します。これはSet Allと似ていますが、より動的なキー操作に適しています。

特にKeep Only SetSet Allは使用頻度が高いため、この2つの違いをしっかり覚えておきましょう。

「Expression」で動的な値を設定する

Setノードの真価は「Expression(式)」を使うことで発揮されます。固定の値を設定するだけでなく、前のノードから渡ってきたデータを動的に加工して設定できるのです。Expressionエディタを開くと、{{ }}という波括弧で囲まれた領域が表示されます。この中にJavaScriptベースの簡単なコードを書くことで、前のノードのデータを参照したり、簡単な計算を行ったりできます。
例えば、前のノードから{ "name": "田中 太郎", "id": 123 }というデータが渡ってきたとします。このとき、SetノードのExpressionに{{ $json.name }}と書けば、「田中 太郎」という値を参照できます。これこそが、データマッピングの基本中の基本です。

実践!よくあるデータマッピングの課題をSetノードで解決

基本を理解したところで、次はより実践的なシナリオを見ていきましょう。ここでは、業務自動化の現場で頻繁に発生する3つのデータマッピング課題を、Setノードを使ってどう解決するかを解説します。

課題1:APIから取得したデータのキー名を変更する

外部のAPIと社内システムを連携させる際、必ずと言っていいほど発生するのが「データ項目の名称(キー名)の不一致」です。例えば、顧客管理APIは顧客IDをcustomer_idとして返す一方、社内のデータベースではclientIDという名前で管理しているケースを考えます。

入力データ (APIからのレスポンス):
{ "customer_id": "CUS-001", "name": "株式会社サンプル", "last_contact_date": "2025-10-28" }

このデータを、社内システムが要求する以下の形式に変換する必要があります。

目標データ (社内システム用):
{ "clientID": "CUS-001", "clientName": "株式会社サンプル" }

こんなときこそSetノードの出番です。モードを「Keep Only Set」に設定し、以下のように値を設定します。

  • Name: clientID, Value (Expression): {{ $json.customer_id }}
  • Name: clientName, Value (Expression): {{ $json.name }}

$jsonは、Setノードが受け取った入力データ全体を指すオブジェクトです。$json.customer_idとすることで、入力データのcustomer_idの値を参照できます。Keep Only Setモードを使っているので、不要なlast_contact_dateは自動的に削除され、目標通りのデータ構造をスマートに作り出すことができます。

課題2:複数の入力ソースを1つのデータ構造に統合する

次に、異なるソースからの情報を一つにまとめるケースです。例えば、「Google Sheetsで管理している商品リスト」と「Webhookでリアルタイムに受け取る在庫数」を組み合わせて、一つの完全な商品情報を作りたいとします。

入力データ1 (Google Sheets):
{ "productName": "高機能マウス", "price": 5000 }

入力データ2 (Webhook – 別のノードから参照):
{ "stock": 35 }

この2つの情報を、Setノードを使ってマージします。まず、Webhookノードのデータを参照できるように、Mergeノードなどを使ってデータを統合しておきます。そのうえで、Setノードのモードを「Set All」にして、以下のように設定します。

  • Name: stockCount, Value (Expression): {{ $('Webhook Node Name').item.json.stock }}

Expression内の$('ノード名').item.json.キー名という書き方を使えば、現在のノード以外のノードのデータを参照できます。これにより、Google Sheetsからのデータ(productName, price)はそのまま保持しつつ、Webhookからの在庫数(stock)をstockCountという新しいキー名で追加し、一つのオブジェクトに統合できます。

課題3:ネストされたJSONデータをフラットな構造に変換する

APIのレスポンスは、しばしば情報が階層化された「ネストされたJSON」形式で返されます。しかし、後続の処理(例えば、スプレッドシートへの書き込みなど)では、フラットなデータ構造の方が扱いやすい場合があります。

入力データ (ネストされたJSON):
{ "orderId": "ORD-001", "customer": { "name": "鈴木 一郎", "contact": { "email": "suzuki@example.com", "phone": "090-1234-5678" } } }

このデータを、以下のようなフラットな構造に変換します。

目標データ (フラットな構造):
{ "orderId": "ORD-001", "customerName": "鈴木 一郎", "customerEmail": "suzuki@example.com" }

これもSetノード(Keep Only Setモード)で解決できます。ドット(.)を使って階層を掘り下げていくだけです。

  • Name: orderId, Value (Expression): {{ $json.orderId }}
  • Name: customerName, Value (Expression): {{ $json.customer.name }}
  • Name: customerEmail, Value (Expression): {{ $json.customer.contact.email }}

このように、どんなに深い階層のデータでも、ドット記法を使えば簡単にアクセスし、 원하는データ構造に再マッピングすることが可能です。

Setノードの応用テクニックと独自のベストプラクティス

基本的なデータマッピングができるようになったら、次はもう一歩踏み込んだ応用テクニックを学びましょう。ここでは、Expression内でJavaScriptの強力なメソッドを活用する方法や、複雑なロジックをスマートに記述するベストプラクティスを紹介します。これらをマスターすれば、あなたのn8nワークフローはさらに洗練されます。

独自の視点:JavaScriptの配列メソッドを駆使する

n8nのExpressionは、単なるデータ参照だけでなく、JavaScriptの強力な組み込みメソッドを利用できるのが大きな魅力です。特に配列を扱う.map().filter().reduce()は非常に強力です。

  • .map()で配列の全要素を変換する
    入力データがアイテムの配列で、各アイテムの価格に10%の消費税を加えたい場合を考えます。
    入力例: [{ "name": "商品A", "price": 1000 }, { "name": "商品B", "price": 2000 }]
    Expression: {{ $json.items.map(item => ({ ...item, priceWithTax: item.price * 1.1 })) }}
    この式は、各アイテムのプロパティはそのままに(...item)、priceWithTaxという新しいプロパティを追加します。
  • .filter()で条件に合う要素だけを抽出する
    有効な(statusが “active” の)ユーザーだけを抽出したい場合に便利です。
    入力例: [{ "name": "Aさん", "status": "active" }, { "name": "Bさん", "status": "inactive" }]
    Expression: {{ $json.users.filter(user => user.status === 'active') }}
    これにより、後続の処理をアクティブユーザーだけに限定できます。
  • .reduce()で配列を集計して単一の値を出す
    複数の注文アイテムの合計金額を計算したい場合などに使えます。
    入力例: [{ "price": 1500, "quantity": 2 }, { "price": 3000, "quantity": 1 }]
    Expression: {{ $json.orderItems.reduce((total, item) => total + (item.price * item.quantity), 0) }}
    この式は、各アイテムの「価格×数量」を計算し、その合計値を算出します。

これらのメソッドを使いこなせば、Codeノードを使わなくても、Setノードだけで高度なデータ変換が完結します。

複雑な条件分岐は三項演算子でスマートに

「もしAならX、そうでなければY」といった条件分岐は、三項演算子 (条件 ? trueの場合の値 : falseの場合の値) を使うと、1行でスマートに記述できます。
例えば、スコアが80点以上なら「合格」、それ未満なら「不合格」というステータスを設定したい場合、以下のように書けます。

Expression: {{ $json.score >= 80 ? '合格' : '不合格' }}

IFノードを使うほどでもないシンプルな条件分岐は、Setノード内で完結させることで、ワークフロー全体の可読性が向上します。

ベストプラクティス:処理は適切に分割する

Setノードは非常に強力ですが、一つのノードに大量のロジックを詰め込みすぎるのは避けるべきです。例えば、「キー名の変更」「値のフォーマット」「新しい値の計算」という3つの異なる操作を、1つのSetノードで行うと、後から見返したときに何をやっているのか理解しにくくなります。
このような場合は、役割ごとにSetノードを複数に分けることをお勧めします。

  1. Set (Rename Keys): キー名を変更するだけのノード
  2. Set (Format Values): 日付や数値の形式を整えるノード
  3. Set (Calculate Fields): 新しい値を計算して追加するノード

このように処理を分割することで、各ノードの役割が明確になり、デバッグや仕様変更の際に修正箇所を特定しやすくなります。ワークフローは、未来の自分や他のチームメンバーにとっても分かりやすい「生きたドキュメント」であることを意識しましょう。

まとめ:Setノードを制してデータマッピングをマスターしよう

この記事では、n8nのSetノードを使ったデータマッピングの基本から応用までを解説しました。Setノードは単なる値設定ツールではなく、ワークフローを流れるデータを自在に整形・変換するための強力な武器です。

キー名の変更、データの統合、構造変換といった基本的な使い方から、JavaScriptのメソッドを活用した高度なテクニックまで、この記事で紹介した内容をマスターすれば、n8nで直面するほとんどのデータ整形の問題は解決できるはずです。

まずは、あなたの既存のワークフローを見直し、Setノードで改善できる箇所がないか探してみてください。小さな改善の積み重ねが、自動化の質を大きく向上させます。

もし、n8nの全体像や基本的な使い方から改めて学びたいと感じた方は、ぜひ「n8n完全ガイド記事」もあわせてご覧ください。導入から実践的なワークフロー構築までを網羅的に解説しています。

まだn8nを試していない方は、この機会にぜひ公式サイトから無料プランで始めて、そのパワフルな機能を体験してみてください。あなたの業務は、きっと劇的に効率化されるはずです。