본문 바로가기
프로그램 (PHP,Python)

n8n 워크플로우에서 Loop Over Items 노드를 사용한 반복 작업 자동화

by 날으는물고기 2024. 6. 6.

n8n 워크플로우에서 Loop Over Items 노드를 사용한 반복 작업 자동화

n8n에서 반복문을 사용하는 방법은 여러 가지가 있지만, 가장 일반적인 방법 중 하나는 "Loop over items" 기능을 활용하는 것입니다. 아래에 n8n에서 반복문을 사용하는 방법을 단계별로 설명하겠습니다.

1. 기본 설정

n8n의 작업흐름(Workflow)을 시작하기 위해 n8n에 로그인하고 새로운 워크플로우를 생성합니다.

2. 노드 추가

반복문을 실행하기 위해 몇 가지 노드를 추가해야 합니다.

a. Start 노드 추가

"Start" 노드를 추가하여 워크플로우의 시작점을 설정합니다.

b. Set 노드 추가

"Set" 노드를 추가하여 반복할 데이터를 설정합니다. 예를 들어, 배열을 설정할 수 있습니다.

  • 노드 이름: Set
  • 파라미터 설정
    {
      "data": [
        {
          "name": "item1",
          "value": 10
        },
        {
          "name": "item2",
          "value": 20
        },
        {
          "name": "item3",
          "value": 30
        }
      ]
    }

3. SplitInBatches 노드 추가

반복 처리를 위해 "SplitInBatches" 노드를 사용합니다. 이 노드는 데이터를 배치로 나눠서 처리할 수 있게 해줍니다.

  • 노드 이름: SplitInBatches
  • 파라미터 설정
    {
      "batchSize": 1
    }

4. 처리할 작업 추가

반복문 안에서 수행할 작업을 정의합니다. 예를 들어, "HTTP Request" 노드를 사용하여 API 호출을 할 수 있습니다.

  • 노드 이름: HTTP Request
  • 파라미터 설정
    • Method: GET
    • URL: https://example.com/api/{{ $json["name"] }}

5. Loop 종료 설정

반복이 끝난 후 다음 작업으로 넘어가기 위해 "NoOp" 노드를 사용합니다. NoOp 노드는 아무 작업도 하지 않으며 워크플로우를 계속 진행하게 해줍니다.

  • 노드 이름: NoOp

6. 노드 연결

모든 노드를 순서대로 연결합니다.

  1. Start 노드 → Set 노드
  2. Set 노드 → SplitInBatches 노드
  3. SplitInBatches 노드 → HTTP Request 노드
  4. HTTP Request 노드 → SplitInBatches 노드 (반복 설정)
  5. SplitInBatches 노드 (마지막) → NoOp 노드

7. 워크플로우 실행

모든 설정이 완료되면 워크플로우를 저장하고 실행합니다. 이 과정에서 n8n은 Set 노드에서 설정한 데이터를 하나씩 SplitInBatches 노드를 통해 배치로 나누어 HTTP Request 노드에서 처리한 후, NoOp 노드를 통해 반복을 종료합니다.

8. 예제 워크플로우 JSON

아래는 위 단계를 적용한 예제 워크플로우 JSON입니다.

{
  "nodes": [
    {
      "parameters": {},
      "name": "Start",
      "type": "n8n-nodes-base.start",
      "typeVersion": 1,
      "position": [250, 300]
    },
    {
      "parameters": {
        "values": {
          "string": [
            {
              "name": "data",
              "value": "[{\"name\": \"item1\", \"value\": 10}, {\"name\": \"item2\", \"value\": 20}, {\"name\": \"item3\", \"value\": 30}]"
            }
          ]
        }
      },
      "name": "Set",
      "type": "n8n-nodes-base.set",
      "typeVersion": 1,
      "position": [450, 300]
    },
    {
      "parameters": {
        "batchSize": 1
      },
      "name": "SplitInBatches",
      "type": "n8n-nodes-base.splitInBatches",
      "typeVersion": 1,
      "position": [650, 300]
    },
    {
      "parameters": {
        "method": "GET",
        "url": "https://example.com/api/{{ $json[\"name\"] }}"
      },
      "name": "HTTP Request",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 1,
      "position": [850, 300]
    },
    {
      "parameters": {},
      "name": "NoOp",
      "type": "n8n-nodes-base.noOp",
      "typeVersion": 1,
      "position": [1050, 300]
    }
  ],
  "connections": {
    "Start": {
      "main": [
        [
          {
            "node": "Set",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set": {
      "main": [
        [
          {
            "node": "SplitInBatches",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "SplitInBatches": {
      "main": [
        [
          {
            "node": "HTTP Request",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "HTTP Request": {
      "main": [
        [
          {
            "node": "SplitInBatches",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "SplitInBatches (1)": {
      "main": [
        [
          {
            "node": "NoOp",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

이와 같은 방식으로 n8n에서 반복문을 구성하여 원하는 작업을 반복적으로 수행할 수 있습니다. 이를 통해 다양한 자동화 작업을 효율적으로 처리할 수 있습니다.

두 개의 RSS 피드를 읽기 위해 Loop Over Items 노드를 활용합니다.

1. 매뉴얼 트리거 추가

워크플로우를 수동으로 시작할 수 있도록 Manual Trigger 노드를 추가합니다.

  1. n8n 에디터에서 "Add Node"를 클릭합니다.
  2. "Manual Trigger" 노드를 선택하여 추가합니다.

2. 코드 노드 추가

RSS 피드 URL을 설정하기 위해 Code 노드를 추가합니다.

  1. "Add Node"를 클릭합니다.
  2. "Code" 노드를 선택하여 추가합니다.
  3. 코드 노드에 아래 코드를 복사하여 붙여넣습니다.
return [
    {
        json: {
            url: 'https://medium.com/feed/n8n-io',
        }
    },
    {
        json: {
            url: 'https://dev.to/feed/n8n',
        }
    }
];

3. Loop Over Items 노드 추가

Loop Over Items 노드를 추가하여 각 RSS 피드 URL을 개별적으로 처리합니다.

  1. "Add Node"를 클릭합니다.
  2. "Loop Over Items" 노드를 선택하여 추가합니다.
  3. Batch Size 필드에 1을 설정합니다. 이는 한 번에 하나의 항목을 처리하도록 설정하는 것입니다.

4. RSS Feed Read 노드 추가

각 URL을 처리할 RSS Feed Read 노드를 추가합니다.

  1. "Add Node"를 클릭합니다.
  2. "RSS Feed Read" 노드를 선택하여 추가합니다.
  3. URL 필드에 {{ $json.url }} 표현식을 사용하여 입력 데이터에서 URL을 매핑합니다.

5. 워크플로우 실행

워크플로우가 설정되었으면 실행하여 데이터를 처리합니다.

  1. Manual Trigger 노드를 클릭하고 "Execute Workflow"를 선택합니다.
  2. 워크플로우가 실행되면서 각 RSS 피드 URL이 RSS Feed Read 노드에 의해 처리되는 것을 확인합니다.

6. 노드 연결

모든 노드를 아래와 같이 연결합니다.

  1. Manual TriggerCode
  2. CodeLoop Over Items
  3. Loop Over ItemsRSS Feed Read

7. 전체 워크플로우

아래는 전체 워크플로우 JSON입니다.

{
  "nodes": [
    {
      "parameters": {},
      "name": "Manual Trigger",
      "type": "n8n-nodes-base.manualTrigger",
      "typeVersion": 1,
      "position": [250, 300]
    },
    {
      "parameters": {
        "functionCode": "return [\n\t{\n\t\tjson: {\n\t\t\turl: 'https://medium.com/feed/n8n-io',\n\t\t}\n\t},\n\t{\n\t\tjson: {\n\t\t\turl: 'https://dev.to/feed/n8n',\n\t\t}\n\t}\n];"
      },
      "name": "Code",
      "type": "n8n-nodes-base.function",
      "typeVersion": 1,
      "position": [450, 300]
    },
    {
      "parameters": {
        "batchSize": 1
      },
      "name": "Loop Over Items",
      "type": "n8n-nodes-base.splitInBatches",
      "typeVersion": 1,
      "position": [650, 300]
    },
    {
      "parameters": {
        "url": "={{ $json.url }}"
      },
      "name": "RSS Feed Read",
      "type": "n8n-nodes-base.rssFeedRead",
      "typeVersion": 1,
      "position": [850, 300]
    }
  ],
  "connections": {
    "Manual Trigger": {
      "main": [
        [
          {
            "node": "Code",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Code": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop Over Items": {
      "main": [
        [
          {
            "node": "RSS Feed Read",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

8. 노드가 모든 항목을 처리했는지 확인

Loop Over Items 노드가 모든 항목을 처리했는지 확인하려면 아래 표현식을 사용합니다.

{{$node["Loop Over Items"].context["noItemsLeft"]}}

이 표현식은 노드가 아직 처리할 데이터가 남아 있으면 false, 그렇지 않으면 true를 반환합니다.

9. 현재 실행 인덱스 가져오기

현재 실행 인덱스를 가져오려면 아래 표현식을 사용합니다.

{{$node["Loop Over Items"].context["currentRunIndex"]}}

이 표현식은 노드의 현재 실행 인덱스를 반환합니다.

이러한 단계를 통해 n8n에서 Loop Over Items 노드를 사용하여 반복 작업을 설정하고 실행할 수 있습니다.

728x90

댓글