💻
概念 #n8n #Codeノード #JavaScript #Python #カスタム処理 #データ変換 📚 n8nワークフロー自動化

n8n Codeノード・カスタム処理

n8nのCodeノードでJavaScript/Pythonを記述してカスタム処理を実装する方法。データ変換・外部ライブラリ利用・複数item処理のパターンを解説。

Codeノードとは

組み込みノードで対応できない処理をJavaScriptまたはPythonで自由に記述できるノード。データ変換・複雑な計算・文字列操作などに使用する。

対応言語と実行環境

言語環境利用可能なもの
JavaScriptNode.js標準ライブラリ + 一部npm(後述)
PythonPython 3標準ライブラリのみ

基本的な書き方(JavaScript)

全itemを処理する場合(デフォルト)

// 入力: 全itemの配列を処理
for (const item of $input.all()) {
  item.json.fullName = `${item.json.firstName} ${item.json.lastName}`;
}
return $input.all();

各itemを個別処理する場合(Run Once for Each Item)

// 入力: 1件のitem
const name = $json.name;
const email = $json.email.toLowerCase();

return { json: { name, email } };

よく使うパターン

配列の整形・フィルタリング

const items = $input.all();
const filtered = items.filter(item => item.json.status === 'active');
return filtered.map(item => ({
  json: {
    id: item.json.id,
    name: item.json.name,
  }
}));

日付フォーマット変換

const date = new Date($json.createdAt);
return {
  json: {
    ...$json,
    formattedDate: date.toLocaleDateString('ja-JP', {
      year: 'numeric', month: '2-digit', day: '2-digit'
    })
  }
};

前のノードのデータ参照

// 別ノード「GetUser」のデータを参照
const user = $('GetUser').first().json;
return { json: { ...$json, userId: user.id } };

利用可能なビルトイン変数

変数内容
$input.all()全inputアイテムの配列
$input.first()最初のinputアイテム
$json現在のitemのjsonデータ
$('NodeName').all()指定ノードの全出力
$now現在日時(Luxonオブジェクト)
$env.VAR_NAME環境変数の値

npmパッケージの利用

n8nのセルフホスト環境では、環境変数でnpmパッケージを許可できる。

# docker-compose.yml or .env
NODE_FUNCTION_ALLOW_EXTERNAL=lodash,crypto-js,papaparse
const _ = require('lodash');
const grouped = _.groupBy($input.all().map(i => i.json), 'category');
return [{ json: grouped }];

Pythonでの記述

items = _input.all()
result = []
for item in items:
    data = item.json
    data['upper_name'] = data['name'].upper()
    result.append({'json': data})
return result

ユースケース

ユースケース説明リンク
複雑なデータ変換JavaScriptで多段変換処理→ doc
PDF自動生成npmライブラリでPDF作成→ doc
カスタムバリデーション入力データの検証ロジック実装→ doc

公式ドキュメント

  1. 1. 🔄n8n概要 - ワークフロー自動化プラットフォーム
  2. 2. ⚙️n8nワークフローの基本(ノード・コネクション・実行)
  3. 3. n8nトリガーの種類(Webhook・スケジュール・イベント)
  4. 4. 🔀n8nロジック制御(フィルター・条件分岐・ループ・マージ)
  5. 5. 🌐n8n HTTP Request・API連携
  6. 6. 🔗n8n主要インテグレーション(Slack・Gmail・GitHub)
  7. 7. 🛡️n8nエラーハンドリング・デバッグ
  8. 8. 🤖n8n AI・LLMエージェント(Chain・Agent)
  9. 9. 💻n8n Codeノード・カスタム処理
  10. 10. 🏢n8nエンタープライズ機能(ソース管理・シークレット・チーム管理)
  11. 11. 🌤️毎朝SlackにAIで天気・ニュースを通知する
  12. 12. 📊GitHubのPRをGoogleシートに自動記録する
  13. 13. 📧新規ユーザー登録時にWelcomeメールを自動送信する
  14. 14. 💳StripeのWebhookで決済完了を検知して処理する
  15. 15. 📈スケジュールトリガーで週次レポートを自動生成する
  16. 16. 🎫Gmailトリガーでサポートメールを自動Notionチケット化する
  17. 17. 🎯条件分岐でリード属性に応じて担当者を振り分ける
  18. 18. 📨ループ処理でリストを走査し一括メール送信する
  19. 19. 📋複数APIのデータをマージして統合レポートを作成する
  20. 20. 🗄️外部REST APIからデータを取得してDBに保存する
  21. 21. 🔍GraphQL APIでGitHubのIssueを取得・加工する
  22. 22. 🔐Bearer認証付きAPIを呼び出してデータ同期する
  23. 23. SlackとNotionを連携したチームタスク管理フロー
  24. 24. 🤝GmailとHubSpotを連携したCRM自動化フロー
  25. 25. 🚀GitHubデプロイイベントをSlackに通知する
  26. 26. 🚨APIエラー発生時にSlackへアラートを送る
  27. 27. 🔁リトライ付きの堅牢なデータ同期フローを構築する
  28. 28. 📝エラーログをAirtableに自動記録する
  29. 29. 🤖LLMを使ったカスタマーサポート自動応答ボット
  30. 30. 🔎ドキュメントRAG検索システムを構築する
  31. 31. 📬AIでメール内容を自動分類・ルーティングする
  32. 32. 🔧JavaScriptで複雑なデータ変換処理を実装する
  33. 33. 📄npmライブラリを使ったPDF自動生成フロー
  34. 34. ✔️カスタムバリデーションロジックをCodeノードで実装する
  35. 35. 🗂️Gitでワークフローをバージョン管理する
  36. 36. 🌍環境変数で本番・ステージングを切り替える
  37. 37. 👥チームでのワークフロー共同管理フロー
  38. 38. 📋AIで履歴書を自動スクリーニング・スコアリングする
  39. 39. 🧾請求書PDFをOCRで自動データ入力・会計ソフト登録する
  40. 40. 📱ブログ記事→SNS自動投稿パイプラインを構築する
  41. 41. 📦Shopify注文処理を完全自動化する(在庫・配送・顧客通知)
  42. 42. 🔔予約リマインダーを自動送信してノーショーを削減する
  43. 43. 📊経営ダッシュボードを毎朝Slackに自動配信する
  44. 44. 🔭競合情報を自動収集してWeeklyレポートにまとめる
  45. 45. 🎉新入社員オンボーディングを完全自動化する

出典: https://docs.n8n.io/code/