조건 분기와 루프 처리

n8n에서 자동화 워크플로우를 설계할 때, 단순히 작업을 순차적으로 연결하는 것만으로는 복잡한 업무를 해결하기 어렵습니다. 실제 업무에서는 데이터의 값이나 상황에 따라 다른 경로로 분기하거나, 여러 데이터를 반복적으로 처리해야 할 때가 많습니다. 이때 필요한 것이 바로 조건 분기와 루프 처리입니다.

조건 분기: 워크플로우의 의사 결정자

n8n의 조건 노드는 데이터의 흐름을 제어하는 역할을 합니다. 조건 노드를 활용하면 특정 조건에 맞는 데이터만 다음 단계로 이동시키거나, 서로 다른 작업을 수행할 수 있습니다.

주요 조건 노드 종류와 간단 예시

노드명 설명 간단 예시
IF 노드 조건식이 참/거짓인지 판별하여 분기 “재고 = 100000` 조건 설정하여 통과된 데이터만 다음 단계로 전달

테스트를 위해 제품명을 의미하는 id와 가격을 의미하는 price를 아래와 같이 생성합니다.

[
  {
    "id": "Brazil Nuts",
    "price": 10.99
  },
  {
    "id": "Organic Chia Seeds",
    "price": 7.99
  },
  {
    "id": "Sliced Provolone Cheese",
    "price": 3.99
  },
  {
    "id": "Pet Grooming Kit",
    "price": 39.99
  },
  {
    "id": "Memory Card",
    "price": 15.99
  },
  {
    "id": "Vegetable Lasagna",
    "price": 6.99
  },
  {
    "id": "Magnetic Puzzle Board",
    "price": 24.99
  },
  {
    "id": "Reusable Produce Bags Set",
    "price": 14.99
  },
  {
    "id": "Oven-Baked Parmesan Zucchini",
    "price": 4.99
  },
  {
    "id": "Green Smoothie Mix",
    "price": 5.99
  }
]

출력을 고정하기 위해서 Set Node를 생성하고 출력을 생성한 json값을 고정합니다. 이를 위해서 Output의 연필을 선택하고 데이터를 붙여넣은 후 고정 핀을 적용합니다.

Set 노드의 입력을 If노드로 연결하여 가격이 10 이상인 경우와 아닌경우를 분류 합니다.

워크플로우를 실행하면 전체 데이터가 10보다 큰경우아 아닌경우로 분류되어 각각 true, false 출력에 5개씩 연결되었습니다.

Switch 노드 예시

  • 시나리오: 고객 등급에 따라 업무를 분기 처리
    1. Set 노드: 고객 데이터(등급 포함) 생성
    2. Switch 노드: 등급별로 분기(예: VIP, 일반, 신규)
    3. 각 등급별로 별도의 알림 또는 작업 수행

테스트를 위해 grade와 id를 의미하는 json데이터를 생성합니다. 데이터를 grade별로 분리하는 동작을 switch를 이용해 수행합니다.

[
  {
    "grade": "A",
    "ID": "12249239"
  },
  {
    "grade": "B",
    "ID": "s33349239"
  },
  {
    "grade": "B",
    "ID": "ff33s49239"
  },
  {
    "grade": "C",
    "ID": "nnd33523"
  }
]         

Set메뉴의 출력에 테스트를 위한 데이터를 저장하고 swich에 grade별로 데이터를 나누는 rule을 설정합니다.

데이터는 grace값이 A, B, C와 각각 동일한 경우 구분되어 출력됩니다. 우측 Output에 3개의 출력이 생성되었고 각각의 item의 갯수가 표시됩니다.

루프 처리: 반복 작업의 자동화

n8n에서는 여러 데이터를 반복적으로 처리할 때 루프 기능을 사용합니다. 대표적으로 Loop Over Items 또는 SplitInBatches 노드를 활용하여, 데이터 리스트의 각 항목을 순차적으로 처리할 수 있습니다.

루프 처리 노드와 간단 예시

노드명 설명 간단 예시
Loop Over Items 데이터 배열을 하나씩 순차적으로 처리 이메일 목록을 하나씩 반복 발송
Split Out 목록으로 포함된 데이터항목을 분리하여 출력합니다. 여러개로 묶인 데이터를 하나씩 분리하여 데이터 처리

SplitInBatches 노드 예시

  • 시나리오: 이메일 주소 목록을 5개씩 묶어서 반복 발송
    1. Set 노드: 이메일 주소 배열 생성
    2. Split Out 노드: 하나의 데이터로 분리하여 메일 발송정보 추출
    3. 각 배치마다 Email 노드로 발송

Set Email 노드에 메일로 발송할 email 정보를 배열로 아래와 같이 저장합니다.

Set Node에 배열로 데이터를 저장하기 위해서 Expression을 사용합니다. Fixed로 입력하는 경우 하나의 문자열로 인식되어 Split Out이 동작하지 않습니다.

Note

Fixed는 항상 같은 값, Expression은 실행 시점에 따라 달라지는 동적 값(변수·계산식·참조 등)을 입력할 때 사용합니다. Set Note의 입력이 String으로 설정되어 있기 때문에 Fixed모드로 입력하면 하나의 텍스트로 입력됩니다.

Split out을 수행하면 배열로 저장되었던 메일이 각각 하나의 item으로 분리되어 최종 출력으로 3개의 email정보가 출력됩니다.

Loop Over Items 노드 예시

  • 시나리오: 고객 리스트를 하나씩 반복 처리
    1. Set 노드: 고객 데이터 배열 생성
    2. Loop Over Items 노드: 각 고객 데이터 반복

입력을 사용하는 과일 데이터는 fruits 키로 관리되며 배열에 저장합니다.

[
{
"fruits": 
"apple"
},
{
"fruits": 
"banana"
},
{
"fruits": 
"orange"
},
{
"fruits": 
"test"
}
]

입력의 각 item을 2개씩 출력하기 위해 Batch Size2로 설정합니다.

2개씩 전달된 아이템은 Aggregate 노드를 애용해서 결합하고 giftItem Key로 저장합니다.

Loop Over Item 노드로 전체 item을 2개씩 묶어 동작을 수행하여 최종 출력은 2개의 giftItem을 생성합니다.

이해를 돕는 연습문제

  1. IF 노드와 Switch 노드의 차이점은 무엇인가요? 각각 어떤 상황에서 사용하는 것이 적합한지 설명해보세요.
  2. SplitInBatches 노드를 활용하여 이메일 목록을 5개씩 묶어서 반복적으로 발송하는 워크플로우를 설계해보세요.

주요 용어 정리

  • 조건 노드: 데이터의 값이나 상태에 따라 워크플로우의 흐름을 분기하는 노드(IF, Filter, Switch 등).
  • 루프: 여러 데이터 항목을 반복적으로 처리하는 구조(Loop Over Items, SplitInBatches 노드 등).
  • 배치: 데이터를 일정 크기로 나누어 반복 처리할 때의 단위.
  • 에러 처리: 조건 분기/루프 처리 중 발생할 수 있는 오류 상황을 관리하는 방법.