n8n 함수(Function) 노드 완벽 가이드 – 로컬 설치 26강
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으로 전송하는 시나리오를 생각해볼 수 있습니다:
- Webhook 노드: 사용자 입력값 수신
- Function 노드: 메시지 형식으로 데이터 정제
- 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 노드를 자유자재로 활용해보세요.