카테고리 없음

[13강] n8n 데이터 가공하기: Function 노드 활용법

mystory5573 2025. 5. 14. 05:07

n8n 데이터 가공하기: Function 노드 활용법

n8n은 다양한 노드를 통해 복잡한 자동화 작업을 간단하게 처리할 수 있는 강력한 툴입니다. 그 중에서도 Function 노드는 데이터를 가공하고 변형하는 데 매우 유용한 도구입니다. Function 노드를 활용하면 데이터를 실시간으로 처리하고, 원하는 형태로 변환하여 후속 작업에 활용할 수 있습니다. 이번 강의에서는 n8n에서 Function 노드를 사용하는 방법과 데이터 가공의 다양한 예제를 소개하겠습니다.

1. Function 노드란?

n8n의 Function 노드는 JavaScript 코드를 실행하여 데이터를 처리할 수 있는 노드입니다. Function 노드는 데이터 가공, 변환, 계산, 조건 처리 등 다양한 작업을 수행할 수 있습니다. 예를 들어, 외부 API에서 받은 데이터를 가공하여 다른 형식으로 변환하거나, 여러 데이터를 합쳐서 새로운 값을 계산하는 작업 등을 자동화할 수 있습니다.

Function 노드는 JavaScript 코드를 사용하여 데이터를 처리하므로, 복잡한 로직이나 수학적 계산, 텍스트 처리 등 다양한 연산을 자유롭게 구현할 수 있습니다. 이를 통해 n8n의 자동화 워크플로우에 고급 기능을 추가할 수 있습니다.

2. n8n에서 Function 노드 설정하기

n8n에서 Function 노드를 사용하는 방법은 매우 간단합니다. 아래 단계를 통해 Function 노드를 설정하고 데이터를 처리하는 방법을 배우겠습니다.

  • 노드 추가: n8n 워크플로우 편집기에서 "노드 추가" 버튼을 클릭하고 "Function"을 검색하여 Function 노드를 추가합니다.
  • 코드 입력: Function 노드를 추가하면 코드 입력 창이 나타납니다. 이곳에 JavaScript 코드를 입력하여 데이터를 처리합니다.
  • 입력 데이터 처리: Function 노드는 이전 노드에서 전달받은 데이터를 처리합니다. 예를 들어, HTTP Request 노드나 Webhook 노드에서 전달된 데이터를 받아 처리할 수 있습니다.
  • 출력 데이터 설정: Function 노드는 처리된 데이터를 후속 작업으로 전달합니다. 출력 데이터 형식은 JSON 형식으로 반환되며, 다른 노드에서 이 데이터를 사용할 수 있습니다.

3. Function 노드로 데이터 가공하기

이제 Function 노드를 활용하여 데이터를 가공하는 몇 가지 예제를 살펴보겠습니다. 이 예제들을 통해 Function 노드를 어떻게 활용할 수 있는지 이해할 수 있을 것입니다.

예제 1: 날짜 형식 변환하기

외부 API에서 받은 날짜 데이터를 특정 형식으로 변환하고 싶을 때, Function 노드를 사용하여 날짜 형식을 변환할 수 있습니다. 예를 들어, "2025-05-13T12:00:00Z" 형식의 날짜를 "2025년 5월 13일" 형식으로 변환할 수 있습니다.

const moment = require('moment');
const formattedDate = moment($input.item.json.date).format('YYYY년 M월 D일');
return [{ json: { formattedDate } }];

위 코드는 입력 데이터에서 `date` 값을 가져와 `moment` 라이브러리를 사용하여 날짜 형식을 변환합니다. 변환된 날짜는 `formattedDate`로 출력됩니다.

예제 2: 여러 값을 합쳐 새로운 값 만들기

Function 노드를 사용하면 여러 데이터를 결합하여 새로운 값을 만들 수 있습니다. 예를 들어, 사용자 이름과 이메일 주소를 합쳐서 "이름 <이메일>" 형식의 문자열을 만들 수 있습니다.

const name = $input.item.json.name;
const email = $input.item.json.email;
const fullNameAndEmail = `${name} <${email}>`;
return [{ json: { fullNameAndEmail } }];

이 코드는 입력 데이터에서 `name`과 `email` 값을 가져와 이를 결합하여 `fullNameAndEmail`이라는 새로운 값을 생성합니다.

예제 3: 조건에 따른 데이터 처리

Function 노드는 조건문을 활용하여 데이터를 조건에 맞게 처리할 수 있습니다. 예를 들어, 사용자의 나이에 따라 다른 메시지를 출력할 수 있습니다.

const age = $input.item.json.age;
let message = '';

if (age >= 18) {
  message = '성인입니다.';
} else {
  message = '미성년자입니다.';
}

return [{ json: { message } }];

위 코드는 사용자의 나이에 따라 "성인입니다." 또는 "미성년자입니다."라는 메시지를 출력합니다. 조건문을 활용하여 다양한 로직을 처리할 수 있습니다.

4. Function 노드를 활용한 고급 데이터 처리

Function 노드는 단순한 데이터 가공 외에도, 더 복잡한 작업을 자동화할 수 있는 강력한 도구입니다. 아래는 Function 노드를 활용한 고급 데이터 처리 예제입니다.

예제 1: API 응답 데이터에서 필요한 값만 추출하기

외부 API에서 받은 데이터에서 특정 값만 추출하여 후속 작업에 사용하려면 Function 노드를 활용할 수 있습니다. 예를 들어, 날씨 API에서 받은 응답에서 기온과 날씨 상태만 추출하여 사용하려면 다음과 같은 코드를 작성할 수 있습니다.

const weatherData = $input.item.json.weather[0];
const temperature = $input.item.json.main.temp;
return [{ json: { weather: weatherData.description, temperature } }];

이 코드는 날씨 API의 응답에서 `weather`와 `main.temp` 값을 추출하여 새로운 데이터로 반환합니다. 후속 작업에서 이 데이터를 사용할 수 있습니다.

예제 2: 데이터를 반복적으로 처리하기

Function 노드를 사용하여 배열 형태의 데이터를 반복적으로 처리할 수 있습니다. 예를 들어, 여러 개의 이메일 주소를 포함한 리스트를 처리하고, 각 이메일로 메시지를 보내는 작업을 자동화할 수 있습니다.

const emails = $input.item.json.emails;
const emailMessages = emails.map(email => {
  return { email, message: '안녕하세요! 자동화된 메시지입니다.' };
});

return emailMessages.map(emailMessage => ({ json: emailMessage }));

이 코드는 입력된 이메일 리스트에서 각 이메일 주소를 처리하고, 메시지를 전송할 데이터를 생성합니다. 배열의 각 항목을 반복하여 처리하고, 새로운 이메일 메시지를 생성하여 출력합니다.

5. Function 노드를 사용한 자동화 최적화

Function 노드는 n8n 워크플로우에서 데이터를 처리하고 변환하는 데 매우 유용합니다. 여러 데이터를 결합하거나 변환하는 작업을 자동화하고, 조건문을 통해 데이터를 필터링하거나, 계산 작업을 할 수 있습니다. 또한, Function 노드는 다른 노드와 결합하여 더 복잡한 자동화 워크플로우를 만들 수 있습니다.

효율적으로 Function 노드를 활용하려면, 데이터를 처리하는 로직을 잘 구조화하고, 필요한 입력과 출력을 명확히 정의하는 것이 중요합니다. 이를 통해 복잡한 자동화 시스템을 간단하게 구축할 수 있습니다.

6. 결론: Function 노드를 통한 데이터 가공의 무한 가능성

n8n의 Function 노드는 데이터를 가공하고 변환하는 데 매우 유용한 도구입니다. JavaScript 코드를 사용하여 복잡한 로직을 처리할 수 있으며, 다양한 데이터 가공 작업을 자동화할 수 있습니다. 이번 강의에서는 Function 노드를 사용하여 데이터를 처리하는 다양한 예제를 살펴보았으며, 이를 통해 복잡한 데이터 가공 작업을 효율적으로 자동화할 수 있음을 알게 되었습니다.

다음 강의에서는 n8n에서 데이터를 활용한 고급 자동화에 대해 다룰 예정입니다. 더 많은 자동화 기술을 배우고, n8n을 활용한 작업을 최적화해 보세요!