n8n Code 노드 JavaScript: 커스텀 로직 구현

목차

    n8n Code 노드 JavaScript: 커스텀 로직 구현

    주민번호 뒷자리를 *로 바꿔야 합니다. 기본 노드로는 안 됩니다.

    Code 노드가 등장할 때입니다. JavaScript 한 줄이면 어떤 변환도 가능합니다.

    이 글을 다 읽으면 복잡한 데이터 가공을 직접 코딩할 수 있습니다.

    ① n8n Code 노드란 — 기본 노드로 안 될 때

    🎭 왜왜씨와 딱딱씨의 대화
    🤔
    왜왜씨

    JavaScript 몰라도 n8n 쓸 수 있다면서요? 왜 Code 노드가 필요해요?

    🎯
    딱딱씨

    기본 노드로 80%는 해결 가능해! 하지만 특수한 계산이나 복잡한 변환이 필요할 때 Code 노드가 빛나지.

    🤔
    왜왜씨

    예를 들면 어떤 경우요?

    🎯
    딱딱씨

    주민번호 마스킹, 복잡한 문자열 파싱, 통계 계산 같은 것들! 그리고 ChatGPT한테 물어보면 코드도 짜줘!

    Code 노드가 필요한 경우

    ✓ 복잡한 문자열 처리 (정규식, 파싱)
    ✓ 커스텀 계산 로직
    ✓ 데이터 구조 대폭 변환
    ✓ 기본 노드로 불가능한 로직

    ② 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에게 코드 요청 가능!

    3초 선택 가이드

    각 데이터 개별 처리? → Run Once for Each Item
    전체 집계/통계? → Run Once for All Items
    현재 데이터 접근? → $input.item.json
    코드 모르겠으면? → ChatGPT에게 물어보기!

    다음 글 예고

    👉 n8n Google API 연동 : Sheets, Drive, Calendar 자동화


    Code 노드는 n8n의 최후의 수단입니다.
    기본 노드로 안 되는 것도 Code로 해결하세요!

    댓글

    이 블로그의 인기 게시물

    n8n으로 업무 자동화 시작하기 : 왜 필요하고 어떻게 활용할까?

    n8n 데이터 처리 노드 : Set, Split, Merge 완벽 정리

    n8n 트리거 노드 : 3가지 유형으로 자동화 시작하기