본문 바로가기
카테고리 없음

n8n 함수(Function) 노드 완벽 가이드 – 로컬 설치 26강

by mystory5573 2025. 5. 25.

n8n Function 노드란 무엇인가?

n8n의 Function 노드는 JavaScript를 사용해 데이터 가공, 분기, 조건 처리 등을 자유롭게 구현할 수 있는 매우 유연한 노드입니다. GUI 방식으로 구성된 다른 노드들과 달리, Function 노드는 코드 기반으로 복잡한 로직을 구현할 수 있어 중급 이상의 자동화 사용자에게 필수적인 기능입니다. 특히 로컬 설치 환경에서 외부 API 없이 데이터를 처리해야 할 때 유용하게 사용됩니다.

Function 노드의 기본 구조 이해하기

Function 노드는 기본적으로 JavaScript 코드 블록을 통해 데이터를 가공합니다. 입력 데이터는 items라는 배열로 제공되며, 각 항목은 다음과 같은 구조를 가집니다:

[
  {
    json: {
      key1: 'value1',
      key2: 'value2'
    }
  }
]

Function 노드는 반드시 return items 형식으로 값을 반환해야 하며, 반환되는 데이터는 다음 노드로 전달됩니다.

기초 예제 – 필드 값 변경하기

아래는 입력된 데이터의 이름을 대문자로 바꾸는 간단한 예제입니다:

return items.map(item => {
  item.json.name = item.json.name.toUpperCase();
  return item;
});

이와 같은 방식으로 Function 노드를 사용하면 GUI로 불가능한 데이터 변환이나 조건 처리를 코드로 손쉽게 구현할 수 있습니다.

조건 처리 예제 – 특정 조건만 필터링

Function 노드를 활용하면 조건 분기 없이도 원하는 조건의 데이터만 필터링할 수 있습니다. 예를 들어, 나이가 30세 이상인 사용자만 전달하려면 아래처럼 구성할 수 있습니다:

return items.filter(item => item.json.age >= 30);

데이터 병합 및 가공 예시

복수 필드를 조합해 새로운 필드를 생성할 수도 있습니다:

return items.map(item => {
  const firstName = item.json.firstName;
  const lastName = item.json.lastName;
  item.json.fullName = `${firstName} ${lastName}`;
  return item;
});

Function 노드 vs Function Item 노드 차이점

n8n에는 Function 노드Function Item 노드가 있습니다. 두 노드의 차이는 다음과 같습니다:

  • Function: items 배열 전체를 한 번에 처리
  • Function Item: 각 item을 개별로 처리

간단한 필드 계산이나 포맷 변경에는 Function Item 노드를, 복잡한 조건 분기나 여러 항목을 동시에 참조해야 할 경우에는 Function 노드를 사용하는 것이 좋습니다.

실전 활용 – Webhook 데이터 정제 후 Slack 전송

실무 예제로, Webhook으로 받은 데이터를 Function 노드로 정제한 후 Slack으로 전송하는 시나리오를 생각해볼 수 있습니다:

  1. Webhook 노드: 사용자 입력값 수신
  2. Function 노드: 메시지 형식으로 데이터 정제
  3. Slack 노드: 채널로 자동 전송
return items.map(item => {
  const user = item.json.user;
  const message = `새 문의가 도착했습니다. 사용자: ${user.name}, 이메일: ${user.email}`;
  return {
    json: {
      text: message
    }
  };
});

로컬 설치 환경에서의 팁

로컬 n8n 환경에서 Function 노드를 사용할 때는 다음 사항을 유의해야 합니다:

  • Function 노드는 Node.js 환경에서 실행되므로 표준 JavaScript만 사용해야 함
  • 외부 모듈은 로컬 설치 환경에 직접 설치하거나 HTTP Request 노드로 우회
  • 디버깅 시 console.log()는 n8n 로그에 표시되지 않음

테스트 데이터를 Inject 노드로 입력하고, Function 노드에서 가공 후 다른 노드로 전달하며 흐름을 점검해보세요.

마무리 – Function 노드로 자동화 로직의 자유도를 높이자

Function 노드는 n8n의 자동화 능력을 한 차원 더 확장시켜주는 강력한 도구입니다. GUI만으로는 구현하기 어려운 데이터 변환, 필터링, 조건 분기 등을 자바스크립트로 유연하게 구현할 수 있으며, 특히 로컬 설치 환경에서도 외부 API 없이 다양한 처리 로직을 구현할 수 있는 장점이 있습니다. 복잡한 자동화가 필요하다면, Function 노드를 자유자재로 활용해보세요.