このレッスンのロックを解除するには、まず「レッスン2:トリガーとアクションを使った初めてのワークフロー構築」を完了してください。前のレッスンに戻る

n8nでアプリを接続する — 全体像

n8nでは、すべてのワークフローはトリガー(処理を開始するノード)から始まり、他のサービスと通信するアクションノードが続きます。2つのアプリを連携させるには、3つの要素が必要です:資格情報(n8nがアプリへのアクセスを許可される)、そのサービス用の適切なノードタイプ、ノード間でデータが移動する際のデータ構造の理解です。

n8nはノード間でデータをJSONオブジェクトとして渡します。各ノードはアイテムの配列を受け取り、何らかの処理を行い、新しい配列を次のノードに渡します。この一貫した構造により、グルーコードを書くことなく、ほぼ任意の2つのアプリを連鎖させることができます。

トリガーノードからJSONアイテムをサービスノードへ、さらに変換ノードへ、そして別のサービスノードへと渡すフローチャート

資格情報と適切なノードの選択

n8nが外部アプリの読み書きを行う前に、資格情報を追加する必要があります。左サイドバーから「Credentials」をクリックし、新規作成してアプリの種類を選択します(例:Google Sheets OAuth2、Slack APIトークン、Airtable PATなど)。保存すると、ワークフロー内のその種類のすべてのノードで再利用できます。

n8nの各アプリは通常、複数のノードを提供しています。Google Sheetsの場合、「Google Sheets」ノードが1つあり、複数の操作(行の読み取り、行の追加、行の更新)を持っています。CRMやマーケティングツールでは、リソースごとに1つのノードが用意されていることがよくあります。適切なノードを選ぶのは、主に必要な操作(読み取り、書き込み、更新)をマッチさせる作業です。

javascript
// Example: a credential reference shown in an n8n node (conceptual)
{
"node": "Google Sheets",
"operation": "readRows",
"credential": "Google Sheets account 1",
"sheetId": "1AbC...",
"range": "A1:D100"
}

サービス間のフィールドマッピング

アプリが異なれば、同じ概念でも呼び名が異なります。Stripeでは顧客は`customer.email`ですが、HubSpotでは`properties.email`であり、Google Sheetsでは列名`Email`かもしれません。あるノードの出力を別のノードの入力フィールドにドラッグすると、n8nは前のアイテムのJSONから値を取得する**式**を生成します。

n8n式の構文を使って手動で式を書くこともできます。参照は`{{ }}`で囲みます。例えば、「Stripe Trigger」という前のノードからメールアドレスを取得するには:

javascript
{{ $json.customer.email }}

(前のノードがSetやFilterの場合など)さらに上流にある特定の名前付きノードから値を取得するには:

javascript
{{ $node["HTTP Request"].json["body"]["title"] }}

この参照システムが、サービス間でフィールドをマッピングする中核です。

SetノードとCodeノードによるデータ変換

受け取ったデータが次のアプリが想定する形式と一致しないことがあります。キーの名前変更、フィールドの結合、空の値の削除、新しいフィールドの計算が必要になる場合があります。**Set**ノードは簡単なケースに対応します — キーの名前変更、特定のキーのみの保持、静的または式ベースの新しいフィールドの追加が可能です。

javascript
// Set node "Edit Fields" configuration (conceptual)
{
"values": {
"string": [
{ "name": "fullName", "value": "{{ $json.firstName }} {{ $json.lastName }}" },
{ "name": "email", "value": "{{ $json.email }}" }
]
},
"options": { "keepOnlySet": true }
}

ループや条件分岐、あるいは実際のロジックが必要な場合は、**Code**ノードを挿入してください。これは入力アイテムごとにJavaScriptまたはPythonを実行し、新しい配列を返します。

javascript
// Code node (JavaScript mode) — keep only paying customers
const items = $input.all();
return items.map(item => {
if (item.json.plan !== 'free') {
return { json: { id: item.json.id, email: item.json.email } };
}
return null;
}).filter(Boolean);

Codeノードは、式やSetノードだけでは足りないときの「脱出ハッチ」です。

実践例:Stripe決済からSlack通知へ

Stripeで新しい有料顧客が発生するたびにSlackメッセージを投稿したいとします。フローには4つのノードがあります:Stripe Trigger(新規顧客)→ Set(データのリシェイプ)→ Code(有料プランのみに絞り込み)→ Slack(メッセージ投稿)。Setノードで親しみやすいメッセージ文字列を構築し、Codeノードで無料プラの顧客を除外し、Slackノードがフォーマット済みのブロックをチャンネルに送信します。

javascript
// Slack node "message" field, built from the Set node output
{{ $json.greeting }} — new paying customer!
Email: {{ $json.email }}
Plan: {{ $json.plan }}
Stripe TriggerからSet、Code、Slackへ、渡されるデータでラベル付けされた矢印で結ばれるリニアワークフロー図

よくある間違いと簡単な修正方法

最も頻度の高いエラーは、受信アイテムに存在しないフィールドを参照することです — その場合、n8nは`undefined`を黙って出力します。常に前のノードの出力パネルを開いてJSONの構造を確認してから式を配線してください。もう一つの落とし穴は、n8nのデータが単一オブジェクトではなく**アイテムの配列**であることです。そのため、`json‘は最初のアイテムを指し、‘json`は最初のアイテムを指し、`input.all()`は配列全体を返します。最後に、APIのレート制限に注意してください。多くのアプリ(Slack、Google Sheets、HubSpot)はバーストリクエストをスロットルするため、大規模なデータセットを同期する際は**Wait**ノードを追加するか、バッチを分割してください。

まとめ

n8nでアプリを接続するには、3つのスキルが必要です:適切な資格情報とノードの追加、式を使ったフィールドマッピング、そしてデータの形式が合わないときにSetノードやCodeノードでリシェイプすることです。これらをマスターすれば、ほぼすべての2つのビジネスアプリをカスタムコードなしでデータをやり取りさせることができます。

レッスンの練習

レッスンのチェックポイント

学んだ内容を復習し、回答へのフィードバックを受けましょう。

0/1
回答済み · 0/1