D: 🚀 n8n의 강력한 기능 중 하나인 Code Node를 마스터하면 워크플로우의 무한한 가능성이 열립니다! 이 글에서는 Code Node의 기본 개념부터 실제 활용 예시까지 상세히 설명드리겠습니다.
📌 Code Node란?
n8n의 Code Node는 JavaScript/Python으로 커스텀 로직을 작성할 수 있는 노드입니다.
- 기존 노드로 처리하기 어려운 복잡한 작업 수행 가능
- 외부 라이브러리 사용 (axios, moment.js 등)
- 데이터 변환/가공에 특화
// 기본 구조 예시
return [
{
json: {
message: "Hello World!",
timestamp: new Date().toISOString()
}
}
];
🔧 설치 & 기본 설정
- 노드 추가: 워크플로우 편집기에서 “+” 버튼 → “Code” 검색
- 언어 선택: JavaScript 또는 Python (대부분 JS 사용)
- 입력 데이터 접근:
$input.all()
또는$node["이전노드이름"].json
💡 10가지 핵심 활용 예시
1️⃣ 간단한 데이터 변환
const rawData = $input.all()[0].json;
return [{
json: {
fullName: `${rawData.firstName} ${rawData.lastName}`,
age: 2023 - rawData.birthYear
}
}];
➡️ 입력: { "firstName": "John", "lastName": "Doe", "birthYear": 1990 }
➡️ 출력: { "fullName": "John Doe", "age": 33 }
2️⃣ API 호출 (axios 사용)
const axios = require('axios');
const response = await axios.get('https://api.example.com/data');
return [{ json: response.data }];
⚠️ 주의: axios
는 n8n 내장 라이브러리라 별도 설치 불필요!
3️⃣ 날짜 포맷팅 (moment.js)
const moment = require('moment');
return [{
json: {
today: moment().format('YYYY-MM-DD'),
nextWeek: moment().add(7, 'days').format('dddd')
}
}];
➡️ 출력: { "today": "2023-11-20", "nextWeek": "Monday" }
4️⃣ 조건부 분기 처리
const sales = $input.all()[0].json.sales;
return sales > 1000 ?
[{ json: { alert: "High Sales!" } }] :
[{ json: { alert: "Normal" } }];
5️⃣ 배열 데이터 필터링
const products = $input.all()[0].json;
const filtered = products.filter(p => p.price > 50);
return filtered.map(item => ({ json: item }));
6️⃣ 암호화/해시 생성
const crypto = require('crypto');
const hash = crypto.createHash('sha256').update('text').digest('hex');
return [{ json: { hash } }];
7️⃣ CSV → JSON 변환
const csv = `name,age\nAlice,30\nBob,25`;
const lines = csv.split('\n');
const result = lines.slice(1).map(line => {
const [name, age] = line.split(',');
return { name, age: parseInt(age) };
});
return result.map(item => ({ json: item }));
8️⃣ 랜덤 데이터 생성
const randomId = Math.random().toString(36).substring(2, 9);
return [{ json: { id: randomId } }];
9️⃣ 에러 핸들링
try {
// 코드 실행
} catch (error) {
return [{ json: { error: error.message } }];
}
🔟 복잡한 계산 (통계 등)
const numbers = $input.all()[0].json.numbers;
const avg = numbers.reduce((a, b) => a + b, 0) / numbers.length;
return [{ json: { average: avg.toFixed(2) } }];
🛠 디버깅 팁
- console.log() 사용:
console.log("디버그 메시지", $input.all());
- n8n 실행 화면에서 로그 확인
- 작은 단위로 테스트
❓ 자주 묻는 질문
Q. 외부 라이브러리를 추가할 수 있나요?
→ 기본 내장 라이브러리만 가능 (axios, moment 등). npm 설치 불가능합니다.
Q. Python 코드 예시는?
def main():
return [{"json": {"result": "Python도 가능!"}}]
🎯 마무리
Code Node는 n8n의 핵심 기능으로, 복잡한 로직을 유연하게 처리할 수 있습니다. 위 예시들을 응용하면 데이터 파이프라인, 자동화 리포트, 실시간 알림 시스템 등 다양한 시나리오에 적용 가능합니다!
💬 궁금한 점은 댓글로 남겨주세요! 다음 튜토리얼에서는 n8n + ChatGPT 연동 방법을 소개할 예정입니다.