n8n Code 노드 JavaScript: 커스텀 로직 구현
목차
주민번호 뒷자리를 *로 바꿔야 합니다. 기본 노드로는 안 됩니다.
Code 노드가 등장할 때입니다. JavaScript 한 줄이면 어떤 변환도 가능합니다.
이 글을 다 읽으면 복잡한 데이터 가공을 직접 코딩할 수 있습니다.
① n8n Code 노드란 — 기본 노드로 안 될 때
JavaScript 몰라도 n8n 쓸 수 있다면서요? 왜 Code 노드가 필요해요?
기본 노드로 80%는 해결 가능해! 하지만 특수한 계산이나 복잡한 변환이 필요할 때 Code 노드가 빛나지.
예를 들면 어떤 경우요?
주민번호 마스킹, 복잡한 문자열 파싱, 통계 계산 같은 것들! 그리고 ChatGPT한테 물어보면 코드도 짜줘!
✓ 복잡한 문자열 처리 (정규식, 파싱)
✓ 커스텀 계산 로직
✓ 데이터 구조 대폭 변환
✓ 기본 노드로 불가능한 로직
② n8n Code 노드 실행 모드 — 하나씩 vs 전체
두 가지 실행 모드
| 모드 | 설명 | 용도 |
|---|---|---|
| Run Once for All Items | 모든 Item을 한 번에 처리 | 집계, 전체 변환 |
| Run Once for Each Item | 각 Item을 개별 처리 | 개별 변환 |
Run Once for Each Item이 더 직관적이고 자주 사용됩니다!
각 데이터를 하나씩 처리하기 때문에 코드가 단순해져요.
③ n8n Code 노드 입출력 — 데이터 받고 내보내기
입력 데이터 접근
// Run Once for Each Item 모드 const item = $input.item; // 현재 Item const data = item.json; // JSON 데이터 const name = item.json.name; // 특정 필드 // Run Once for All Items 모드 const items = $input.all(); // 모든 Items 배열 const firstItem = $input.first(); // 첫 번째 Item
출력 데이터 반환
// 단일 Item 반환 (Each Item 모드)
return {
json: {
name: "처리된 이름",
value: 100
}
};
// 여러 Items 반환 (All Items 모드)
return [
{ json: { name: "Item 1" } },
{ json: { name: "Item 2" } }
];
반환값은 항상 { json: {...} } 형식이어야 합니다!
④ n8n Code 노드 패턴 — 문자열·숫자·조건 처리
문자열 처리
// 이메일에서 도메인 추출
const email = $input.item.json.email;
const domain = email.split('@')[1];
return { json: { domain } };
숫자 계산
// 할인가 계산
const price = $input.item.json.price;
const discount = 0.1; // 10%
const finalPrice = Math.round(price * (1 - discount));
return { json: { originalPrice: price, finalPrice } };
조건부 처리
// 금액에 따른 등급 분류
const amount = $input.item.json.totalAmount;
let grade;
if (amount >= 1000000) grade = 'VIP';
else if (amount >= 500000) grade = 'Gold';
else if (amount >= 100000) grade = 'Silver';
else grade = 'Bronze';
return { json: { ...$input.item.json, grade } };
배열 처리 (All Items 모드)
// 총합 계산
const items = $input.all();
const total = items.reduce((sum, item) => sum + item.json.amount, 0);
const average = total / items.length;
return [{ json: { total, average, count: items.length } }];
⑤ n8n Code 노드 실전 예제
💡 예제 1: 전화번호 포맷팅
// 01012345678 → 010-1234-5678
const phone = $input.item.json.phone.replace(/[^0-9]/g, '');
const formatted = phone.replace(/(\d{3})(\d{4})(\d{4})/, '$1-$2-$3');
return { json: { phone: formatted } };
💡 예제 2: 개인정보 마스킹
// 이메일 마스킹: hong@gmail.com → h***@gmail.com
const email = $input.item.json.email;
const [local, domain] = email.split('@');
const masked = local[0] + '***@' + domain;
return { json: { maskedEmail: masked } };
💡 예제 3: JSON 구조 변환
// 배열을 객체로 변환
const items = $input.all();
const result = {};
items.forEach(item => {
result[item.json.id] = item.json.name;
});
return [{ json: result }];
Code 노드 공식 문서에서 더 많은 예제를 확인하세요!
Each Item - 개별 처리, $input.item
All Items - 일괄 처리, $input.all()
반환 - { json: {...} } 형식 필수
활용 - ChatGPT에게 코드 요청 가능!
각 데이터 개별 처리? → Run Once for Each Item
전체 집계/통계? → Run Once for All Items
현재 데이터 접근? → $input.item.json
코드 모르겠으면? → ChatGPT에게 물어보기!
👉 n8n Google API 연동 : Sheets, Drive, Calendar 자동화
Code 노드는 n8n의 최후의 수단입니다.
기본 노드로 안 되는 것도 Code로 해결하세요!
댓글
댓글 쓰기