G: 안녕하세요! 🚀 자동화와 데이터 가공의 세계에 오신 것을 환영합니다. 현대의 비즈니스와 개인 프로젝트에서 데이터는 마치 혈액과 같습니다. 하지만 데이터가 그대로는 쓸모가 없는 경우가 많죠. 목적에 맞게 정제하고, 변형하고, 필요한 부분만 추출하는 ‘데이터 가공’은 자동화 워크플로우의 핵심 역량입니다.
n8n은 코드를 몰라도 강력한 자동화를 구축할 수 있게 해주는 혁신적인 툴입니다. 그리고 그 n8n의 핵심 중 하나가 바로 ‘Set 노드’입니다. Set 노드는 단순해 보이지만, 데이터를 자유자재로 요리할 수 있는 마법의 칼날과도 같습니다. 🔪
이 글에서는 n8n Set 노드의 기본 개념부터 시작하여, 실제 비즈니스 및 개인 프로젝트에서 흔히 마주치는 10가지 실전 예제를 통해 Set 노드를 마스터하는 방법을 자세히 알려드릴 예정입니다. 이 글을 다 읽고 나면, 여러분은 데이터 가공의 달인이 되어 n8n 워크플로우를 더욱 강력하고 유연하게 만들 수 있을 것입니다! 💪
💡 n8n Set 노드, 왜 중요할까요?
n8n Set 노드는 워크플로우의 특정 지점에서 데이터를 추가하거나, 수정하거나, 제거하거나, 이름을 변경하는 등 데이터 구조를 조작하는 데 사용됩니다. 다른 노드에서 받은 데이터를 다음 노드(예: 데이터베이스에 저장, 다른 API로 전송, 이메일 발송 등)가 이해할 수 있는 형식으로 변환해야 할 때 필수적입니다.
주요 기능:
- 데이터 추가 (Set): 새로운 필드와 값을 생성합니다.
- 데이터 유지 (Keep): 특정 필드만 남기고 나머지는 제거합니다.
- 데이터 제거 (Remove): 특정 필드를 제거합니다.
- 필드 이름 변경 (Rename): 기존 필드의 이름을 바꿉니다.
Set 노드를 통해 여러분은 데이터 클렌징, 형식 변환, 정보 결합 등 다양한 작업을 효율적으로 수행할 수 있습니다. 마치 주방에서 재료를 손질하는 것처럼, Set 노드는 데이터를 다음 단계로 넘기기 전에 완벽하게 준비시켜 줍니다. 🧑🍳
🛠️ Set 노드 기본 사용법 훑어보기
Set 노드를 워크플로우에 추가하면 몇 가지 중요한 설정을 볼 수 있습니다.
- Mode (모드):
- Set: 새로운 필드를 추가하거나 기존 필드의 값을 변경합니다.
- Keep: 지정한 필드만 남기고 모든 다른 필드를 제거합니다.
- Remove: 지정한 필드를 제거합니다.
- Rename: 필드의 이름을 변경합니다.
- Values (값):
Add Value
버튼을 클릭하여 조작할 필드를 추가합니다.Field Name
: 조작할 필드의 이름입니다. (새로 만들거나 기존 이름).Value
: 필드에 할당할 값입니다. 정적인 값(텍스트, 숫자)을 넣거나, 표현식(Expression)을 사용하여 동적인 값을 생성할 수 있습니다.Options
: 데이터 타입 변환(Convert Data Type) 등의 추가 설정이 있습니다.
가장 중요한 것은 Value
필드에서 표현식(Expression)을 사용하는 능력입니다. JavaScript 문법과 n8n의 내장 함수를 활용하여 데이터에 복잡한 연산을 수행할 수 있습니다. {{ $json.fieldName }}
과 같은 형태로 이전 노드의 데이터를 참조할 수 있습니다.
🎯 10가지 실전 예제로 Set 노드 마스터하기
자, 이제 실제 예시들을 통해 Set 노드의 강력함을 경험해 봅시다!
예제 1: 정적(Static) 값 추가하기 🏷️
가장 기본적인 사용법입니다. 모든 데이터 아이템에 동일한 새로운 필드를 추가할 때 유용합니다.
- 문제 상황: 모든 고객 데이터에 ‘유입 경로’ 정보를 추가하고 싶습니다.
- 해결 방법:
Mode
를Set
으로 설정하고, 새로운 필드와 정적인 값을 지정합니다.
// ✨ Input Data (입력 데이터)
[
{ "id": 101, "name": "김철수", "email": "kim@example.com" },
{ "id": 102, "name": "박영희", "email": "park@example.com" }
]
n8n Set 노드 설정:
- Mode: Set
- Values:
- Field Name:
source
- Value:
Website Form
- Field Name:
// ✅ Output Data (출력 데이터)
[
{ "id": 101, "name": "김철수", "email": "kim@example.com", "source": "Website Form" },
{ "id": 102, "name": "박영희", "email": "park@example.com", "source": "Website Form" }
]
설명: 모든 고객 데이터에 source: "Website Form"
필드가 추가되었습니다. 마케팅 캠페인이나 데이터 출처를 기록할 때 유용합니다.
예제 2: 기존 필드 값 복사 및 새 이름으로 저장 📝
기존 필드의 값을 그대로 유지하면서 새로운 이름의 필드에 복사할 때 사용합니다.
- 문제 상황: 기존
product_id
를 유지하면서item_code
라는 새로운 필드에도 동일한 값을 저장하고 싶습니다. - 해결 방법:
Mode
를Set
으로 설정하고,Value
에 표현식을 사용하여 기존 필드를 참조합니다.
// ✨ Input Data
[
{ "order_id": "ORD001", "product_id": "PROD_ABC", "quantity": 2 }
]
n8n Set 노드 설정:
- Mode: Set
- Values:
- Field Name:
item_code
- Value:
{{ $json.product_id }}
(표현식)
- Field Name:
// ✅ Output Data
[
{ "order_id": "ORD001", "product_id": "PROD_ABC", "quantity": 2, "item_code": "PROD_ABC" }
]
설명: product_id
의 값이 item_code
라는 새 필드에 그대로 복사되었습니다. 백업 목적이나 데이터베이스 스키마 변경 시 유용합니다.
예제 3: 필드 이름 변경하기 ♻️
데이터의 일관성을 위해 필드 이름을 표준화해야 할 때 사용합니다.
- 문제 상황: 외부 API에서 받은 데이터 필드 이름
user_name
을 내부 시스템의fullName
으로 변경하고 싶습니다. - 해결 방법:
Mode
를Rename
으로 설정하고, 변경할 필드의 원래 이름과 새 이름을 지정합니다.
// ✨ Input Data
[
{ "id": 201, "user_name": "Jane Doe", "email": "jane@example.com" }
]
n8n Set 노드 설정:
- Mode: Rename
- Values:
- Field Name:
user_name
- To Field Name:
fullName
- Field Name:
// ✅ Output Data
[
{ "id": 201, "fullName": "Jane Doe", "email": "jane@example.com" }
]
설명: user_name
필드가 fullName
으로 깔끔하게 변경되었습니다. 여러 소스에서 들어오는 데이터를 통합할 때 필수적인 작업입니다.
예제 4: 불필요한 필드 제거하기 🧹
데이터베이스에 저장하거나 다른 시스템으로 보낼 때, 불필요한 필드를 제거하여 데이터 크기를 줄이고 보안을 강화할 수 있습니다.
- 문제 상황: 사용자 데이터에서
password_hash
와last_login_ip
같은 민감하거나 불필요한 필드를 제거하고 싶습니다. - 해결 방법:
Mode
를Remove
로 설정하고, 제거할 필드 이름을 지정합니다.
// ✨ Input Data
[
{ "id": 301, "name": "Tom", "email": "tom@example.com", "password_hash": "abc123xyz", "last_login_ip": "192.168.1.1" }
]
n8n Set 노드 설정:
- Mode: Remove
- Values:
- Field Name:
password_hash
- Field Name:
last_login_ip
- Field Name:
// ✅ Output Data
[
{ "id": 301, "name": "Tom", "email": "tom@example.com" }
]
설명: 지정된 필드들이 데이터에서 깨끗하게 제거되었습니다. 개인정보 보호나 불필요한 데이터 전송을 막을 때 효과적입니다.
예제 5: 여러 필드를 조합하여 새로운 필드 생성하기 🔗
데이터베이스나 다른 서비스에서 요구하는 특정 형식의 문자열을 생성할 때 매우 유용합니다.
- 문제 상황:
firstName
과lastName
필드를 조합하여fullName
필드를 만들고 싶습니다. - 해결 방법:
Mode
를Set
으로 설정하고,Value
에 JavaScript 표현식을 사용하여 두 필드를 결합합니다.
// ✨ Input Data
[
{ "id": 401, "firstName": "Sejong", "lastName": "Kim" }
]
n8n Set 노드 설정:
- Mode: Set
- Values:
- Field Name:
fullName
- Value:
{{ $json.firstName + ' ' + $json.lastName }}
(표현식)
- Field Name:
// ✅ Output Data
[
{ "id": 401, "firstName": "Sejong", "lastName": "Kim", "fullName": "Sejong Kim" }
]
설명: firstName
과 lastName
이 공백으로 연결되어 fullName
필드가 생성되었습니다. 주소, 메시지 본문 등을 조합할 때도 활용할 수 있습니다.
예제 6: 데이터 타입 변환하기 ↔️
숫자, 문자열, 불리언 등 데이터 타입을 변경해야 할 때 사용합니다. 특히 API 연동 시 데이터 타입 불일치로 인한 오류를 방지할 수 있습니다.
- 문제 상황: ‘123’과 같은 문자열 형식의
order_id
를 실제 숫자 타입으로 변환하고 싶습니다. 또한is_active
문자열을 불리언으로 변환하고 싶습니다. - 해결 방법:
Mode
를Set
으로 설정하고,Value
에 원하는 값을 넣은 후Options
에서Convert Data Type
을 지정합니다.
// ✨ Input Data
[
{ "order_id": "123", "total_amount": "50.75", "is_active": "true" }
]
n8n Set 노드 설정:
- Mode: Set
- Values:
- Field Name:
order_id
- Value:
{{ $json.order_id }}
- Options > Convert Data Type:
Number
-
- Field Name:
total_amount
- Value:
{{ $json.total_amount }}
- Options > Convert Data Type:
Number
-
- Field Name:
is_active
- Value:
{{ $json.is_active }}
- Options > Convert Data Type:
Boolean
- Field Name:
// ✅ Output Data
[
{ "order_id": 123, "total_amount": 50.75, "is_active": true }
]
설명: 문자열이었던 order_id
와 total_amount
는 숫자로, "true"
문자열은 실제 불리언 true
로 변환되었습니다. 이는 데이터베이스에 저장하거나, 계산을 수행할 때 매우 중요합니다.
예제 7: 조건에 따라 값 설정하기 (삼항 연산자 활용) 🚦
특정 조건에 따라 다른 값을 할당해야 할 때 사용합니다. If/Else 조건문을 Set 노드 내에서 간단하게 처리할 수 있습니다.
- 문제 상황:
stock_level
이 10 미만이면low_stock
상태로, 아니면in_stock
상태로status
필드를 만들고 싶습니다. - 해결 방법:
Mode
를Set
으로 설정하고,Value
에 JavaScript 삼항 연산자를 사용합니다.
// ✨ Input Data
[
{ "product": "Mouse", "stock_level": 5 },
{ "product": "Keyboard", "stock_level": 25 }
]
n8n Set 노드 설정:
- Mode: Set
- Values:
- Field Name:
status
- Value:
{{ $json.stock_level sum + item.price * item.quantity, 0) }}
(표현식)
- Field Name:
// ✅ Output Data
[
{
"order_id": "ORD_007",
"customer": "James Bond",
"items": [ ... ], // 기존 items 배열 유지
"total_amount": 165.50 // (45.00 * 1) + (120.50 * 1)
}
]
설명: items
배열 내의 각 아이템 price
와 quantity
를 곱하여 합산한 total_amount
가 계산되었습니다. 이는 복잡한 보고서나 회계 관련 데이터를 처리할 때 매우 강력한 기능입니다.
🧠 Set 노드 마스터를 위한 추가 팁!
- Small Steps (작은 단계): 한 번에 너무 많은 것을 바꾸려 하지 마세요. 여러 개의 Set 노드를 연속해서 사용하여 단계별로 데이터를 가공하는 것이 좋습니다.
- Expressions (표현식) 연습: Set 노드의 진정한 힘은 표현식에서 나옵니다. JavaScript의 기본적인 문법(삼항 연산자, 문자열 메서드, 배열 메서드 등)을 익히면 활용도가 무궁무진해집니다.
- Test Often (자주 테스트): Set 노드의 설정을 변경할 때마다 ‘Execute Workflow’를 실행하여 Output 데이터가 예상대로 나오는지 확인하세요.
- Documentation (문서 활용): n8n 공식 문서에는 Set 노드와 표현식에 대한 더 자세한 정보가 있습니다. 막힐 때는 문서를 참고하세요.
- Always Output Data: Set 노드의 옵션 중 “Always Output Data”를 활성화하면, 입력 데이터가 없어도 (예: 이전 노드에서 아무것도 반환하지 않았을 때) Set 노드 자체에서 정의한 기본 데이터를 출력할 수 있습니다. 특정 워크플로우 시작점에 유용할 수 있습니다.
✨ 결론: 데이터 가공의 핵심, Set 노드를 정복하세요!
n8n Set 노드는 단순한 데이터 조작을 넘어, 여러분의 워크플로우를 유연하고 강력하게 만드는 핵심 도구입니다. 이 글에서 다룬 10가지 예시들은 Set 노드가 얼마나 다양한 시나리오에서 활용될 수 있는지를 보여주었습니다.
이제 여러분은 데이터를 자유자재로 다루는 법을 배웠습니다. 💡 이 지식을 바탕으로 여러분의 자동화 워크플로우를 더욱 효율적이고 견고하게 구축할 수 있을 것입니다. 망설이지 말고 직접 n8n에서 Set 노드를 가지고 놀아보세요! 직접 해보는 것만큼 좋은 공부는 없습니다.
궁금한 점이 있다면 언제든지 댓글로 남겨주세요! 여러분의 성공적인 자동화를 응원합니다. 🚀 행복한 자동화 생활 되세요!