8
n8n 한국어amn8n.com

批量 Google Drive에 파일 업로드 및 폴더 관리

중급

이것은HR, IT Ops분야의자동화 워크플로우로, 13개의 노드를 포함합니다.주로 If, Set, Code, FormTrigger, GoogleDrive 등의 노드를 사용하며. Google Drive에 대량 파일 업로드 및 폴더 관리

사전 요구사항
  • Google Drive API 인증 정보

카테고리

워크플로우 미리보기
노드 연결 관계를 시각적으로 표시하며, 확대/축소 및 이동을 지원합니다
워크플로우 내보내기
다음 JSON 구성을 복사하여 n8n에 가져오면 이 워크플로우를 사용할 수 있습니다
{
  "meta": {
    "instanceId": "d4d7965840e96e50a3e02959a8487c692901dfa8d5cc294134442c67ce1622d3",
    "templateCredsSetupCompleted": true
  },
  "nodes": [
    {
      "id": "9252c041-d6b2-49fe-8edb-8d8cb8a1341d",
      "name": "폼 제출 시",
      "type": "n8n-nodes-base.formTrigger",
      "position": [
        240,
        0
      ],
      "webhookId": "0c5c8b39-06a7-4d07-95be-b729d2a9eb6f",
      "parameters": {
        "options": {},
        "formTitle": "Batch File Upload to Google Drive",
        "formFields": {
          "values": [
            {
              "fieldType": "file",
              "fieldLabel": "file",
              "requiredField": true
            },
            {
              "fieldLabel": "folderName",
              "requiredField": true
            }
          ]
        },
        "formDescription": "Use this form to upload multiple files to a specific Google Drive folder. Simply select your files and specify your target folder name. If the folder doesn't exist yet, we'll create it automatically for you. This streamlined process allows you to organize and store multiple files in one go, saving you time and effort."
      },
      "typeVersion": 2.2
    },
    {
      "id": "e27712ac-238d-4b45-b842-a044dc40dccd",
      "name": "폴더 이름 가져오기",
      "type": "n8n-nodes-base.set",
      "position": [
        560,
        0
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "1b997842-86f3-4bce-b8d2-e8d73387dae1",
              "name": "folderName",
              "type": "string",
              "value": "={{ $json.folderName }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "555e761a-ea79-40eb-b36f-72fbcc642fda",
      "name": "특정 폴더 검색",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        800,
        0
      ],
      "parameters": {
        "filter": {},
        "options": {},
        "resource": "fileFolder",
        "queryString": "=mimeType='application/vnd.google-apps.folder' and name = '{{ $json.folderName }}' and '<folderId>' in parents\n",
        "searchMethod": "query"
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "id": "2SIFnsVfdw9nx9I4",
          "name": "Google Drive account"
        }
      },
      "executeOnce": false,
      "typeVersion": 3,
      "alwaysOutputData": true
    },
    {
      "id": "2a92c031-44e5-4e07-89ff-058251c43027",
      "name": "폴더를 찾았나요?",
      "type": "n8n-nodes-base.if",
      "position": [
        1280,
        0
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "11abd7e3-d90b-4bb1-a8ba-d3cbc4333d8f",
              "operator": {
                "type": "object",
                "operation": "notEmpty",
                "singleValue": true
              },
              "leftValue": "={{ $json }}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "e413cdc8-8424-41d3-8791-e036392a16ac",
      "name": "폴더 생성",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        1680,
        100
      ],
      "parameters": {
        "name": "={{ $('On form submission').item.json.folderName }}",
        "driveId": {
          "__rl": true,
          "mode": "list",
          "value": "My Drive"
        },
        "options": {},
        "folderId": {
          "__rl": true,
          "mode": "list",
          "value": "17sGS9HdmAtgpd5rC1sVuiIUGyw2hq9IY",
          "cachedResultUrl": "https://drive.google.com/drive/folders/17sGS9HdmAtgpd5rC1sVuiIUGyw2hq9IY",
          "cachedResultName": "n8n"
        },
        "resource": "folder"
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "id": "2SIFnsVfdw9nx9I4",
          "name": "Google Drive account"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "aada549c-3bbd-453b-9d48-4ab25446d8ce",
      "name": "파일 업로드",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        2180,
        -100
      ],
      "parameters": {
        "name": "={{ $json.fileName }}",
        "driveId": {
          "__rl": true,
          "mode": "list",
          "value": "My Drive"
        },
        "options": {},
        "folderId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $('Search specific folder').item.json.id }}"
        },
        "inputDataFieldName": "=data"
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "id": "2SIFnsVfdw9nx9I4",
          "name": "Google Drive account"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "7b4bcb6e-3b63-4243-8f38-a18f3d5d44f2",
      "name": "업로드용 파일 준비",
      "type": "n8n-nodes-base.code",
      "position": [
        1920,
        -100
      ],
      "parameters": {
        "jsCode": "let results = [];\nconst items = $(\"On form submission\").all()\n\nfor (item of items) {\n    for (key of Object.keys(item.binary)) {\n        results.push({\n            json: {\n                fileName: item.binary[key].fileName\n            },\n            binary: {\n                data: item.binary[key],\n            }\n        });\n    }\n}\n\nreturn results;"
      },
      "typeVersion": 2
    },
    {
      "id": "1d08ef78-68e7-4901-80fc-17923344fee3",
      "name": "새 폴더용 파일 준비",
      "type": "n8n-nodes-base.code",
      "position": [
        1920,
        100
      ],
      "parameters": {
        "jsCode": "let results = [];\nconst items = $(\"On form submission\").all()\n\nfor (item of items) {\n    for (key of Object.keys(item.binary)) {\n        results.push({\n            json: {\n                fileName: item.binary[key].fileName\n            },\n            binary: {\n                data: item.binary[key],\n            }\n        });\n    }\n}\n\nreturn results;"
      },
      "typeVersion": 2
    },
    {
      "id": "557d2c63-7bbb-4280-b16e-71c6d900973b",
      "name": "새 폴더에 업로드",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        2180,
        100
      ],
      "parameters": {
        "name": "={{ $json.fileName }}",
        "driveId": {
          "__rl": true,
          "mode": "list",
          "value": "My Drive"
        },
        "options": {},
        "folderId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $('Create Folder').item.json.id }}"
        },
        "inputDataFieldName": "=data"
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "id": "2SIFnsVfdw9nx9I4",
          "name": "Google Drive account"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "e90ccfb0-cf21-45d2-860e-bc2049ed9682",
      "name": "스티커 메모",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -400,
        -200
      ],
      "parameters": {
        "color": 5,
        "width": 520,
        "height": 520,
        "content": "# 🗂️ Bulk File Upload to Google Drive with Folder Management\n\n## Overview\nThis workflow processes a form submission that accepts:\n- Multiple file uploads (any format)\n- Target folder name input\n\nThe workflow automatically:\n- Checks if the specified folder exists in Google Drive\n- Creates the folder if it doesn't exist\n- Uploads all files to the correct folder\n- Maintains original file names and structure\n\nPerfect for batch uploading files while keeping your Drive organized!\n"
      },
      "typeVersion": 1
    },
    {
      "id": "cd00c8a3-42e3-44f4-89b3-663da809346c",
      "name": "스티커 메모1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1100,
        -440
      ],
      "parameters": {
        "color": 5,
        "width": 460,
        "height": 380,
        "content": "## 🔄 Decision Point: Folder Check\nThe workflow splits into two paths based on folder existence:\n- ✅ TRUE: Use existing folder path\n- 🆕 FALSE: Create new folder path\n\n## 🗂️ Existing Folder Path (Upper)\n1. Prepare Files for Upload: Splits files for individual processing\n2. Upload Files: Uploads to existing folder maintaining structure\n\n## 📁 New Folder Path (Lower)\n1. Create Folder: Generates new folder in Drive\n2. Prepare Files for New Folder: Splits files for individual processing\n3. Upload to New Folder: Uploads to newly created folder"
      },
      "typeVersion": 1
    },
    {
      "id": "a0b1ff8a-3308-41da-bb4b-01b50cccc456",
      "name": "스티커 메모2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1920,
        -340
      ],
      "parameters": {
        "color": 5,
        "width": 360,
        "height": 200,
        "content": "## ⚙️ File Processing Notes\n- All binary files are split individually for proper upload handling\n- Original file names and structure are preserved\n- Both paths ensure identical file organization\n\nalso see https://n8n.io/workflows/1621-split-out-binary-data/"
      },
      "typeVersion": 1
    },
    {
      "id": "c16b2105-638d-4d48-b39d-ff8772375674",
      "name": "스티커 메모4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        400,
        -340
      ],
      "parameters": {
        "color": 5,
        "width": 660,
        "height": 280,
        "content": "## 🔍 Search Query Pattern\n\nThe following search pattern looks for a folder with the specified name in a particular parent folder:\nMake sure to replace <folderId>\n\n```javascript\nmimeType='application/vnd.google-apps.folder' and name = '{{ $json.folderName }}' and '<folderId>' in parents\n```\n\n**Important**: Marl Always Output Data so you can check also if nothing found."
      },
      "typeVersion": 1
    }
  ],
  "pinData": {},
  "connections": {
    "e413cdc8-8424-41d3-8791-e036392a16ac": {
      "main": [
        [
          {
            "node": "1d08ef78-68e7-4901-80fc-17923344fee3",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "2a92c031-44e5-4e07-89ff-058251c43027": {
      "main": [
        [
          {
            "node": "7b4bcb6e-3b63-4243-8f38-a18f3d5d44f2",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "e413cdc8-8424-41d3-8791-e036392a16ac",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "e27712ac-238d-4b45-b842-a044dc40dccd": {
      "main": [
        [
          {
            "node": "555e761a-ea79-40eb-b36f-72fbcc642fda",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "9252c041-d6b2-49fe-8edb-8d8cb8a1341d": {
      "main": [
        [
          {
            "node": "e27712ac-238d-4b45-b842-a044dc40dccd",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "555e761a-ea79-40eb-b36f-72fbcc642fda": {
      "main": [
        [
          {
            "node": "2a92c031-44e5-4e07-89ff-058251c43027",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "7b4bcb6e-3b63-4243-8f38-a18f3d5d44f2": {
      "main": [
        [
          {
            "node": "aada549c-3bbd-453b-9d48-4ab25446d8ce",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "1d08ef78-68e7-4901-80fc-17923344fee3": {
      "main": [
        [
          {
            "node": "557d2c63-7bbb-4280-b16e-71c6d900973b",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
자주 묻는 질문

이 워크플로우를 어떻게 사용하나요?

위의 JSON 구성 코드를 복사하여 n8n 인스턴스에서 새 워크플로우를 생성하고 "JSON에서 가져오기"를 선택한 후, 구성을 붙여넣고 필요에 따라 인증 설정을 수정하세요.

이 워크플로우는 어떤 시나리오에 적합한가요?

중급 - 인사, IT 운영

유료인가요?

이 워크플로우는 완전히 무료이며 직접 가져와 사용할 수 있습니다. 다만, 워크플로우에서 사용하는 타사 서비스(예: OpenAI API)는 사용자 직접 비용을 지불해야 할 수 있습니다.

워크플로우 정보
난이도
중급
노드 수13
카테고리2
노드 유형6
난이도 설명

일정 경험을 가진 사용자를 위한 6-15개 노드의 중간 복잡도 워크플로우

저자
Julian Kaiser

Julian Kaiser

@jksr

Full Stack Developer turned AI & Automation Engineer, implementing intelligent solutions with custom code, LLMs & n8n. Use my link to book a consultation on automating your business processes.

외부 링크
n8n.io에서 보기

이 워크플로우 공유

카테고리

카테고리: 34