8
n8n 한국어amn8n.com

구글 시트 복사 워크플로우

중급

이것은AI, IT Ops분야의자동화 워크플로우로, 15개의 노드를 포함합니다.주로 Code, HttpRequest, GoogleSheets, ManualTrigger, SplitInBatches 등의 노드를 사용하며인공지능 기술을 결합하여 스마트 자동화를 구현합니다. 구글 시트 복사 및 풍부 자동화

사전 요구사항
  • 대상 API의 인증 정보가 필요할 수 있음
  • Google Sheets API 인증 정보
워크플로우 미리보기
노드 연결 관계를 시각적으로 표시하며, 확대/축소 및 이동을 지원합니다
워크플로우 내보내기
다음 JSON 구성을 복사하여 n8n에 가져오면 이 워크플로우를 사용할 수 있습니다
{
  "meta": {
    "instanceId": "YOUR_INSTANCE_ID"
  },
  "name": "Google Sheets Duplication Workflow",
  "tags": [],
  "nodes": [
    {
      "id": "workflow-overview-sheets",
      "name": "워크플로 개요",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1450,
        -50
      ],
      "parameters": {
        "color": 2,
        "width": 350,
        "height": 320,
        "content": "# 📊 Google Sheets Duplication Workflow\n\n**Purpose:** Duplicate sheets from master spreadsheet to new spreadsheet\n\n**Process Overview:**\n1. Create new spreadsheet\n2. Get all sheets from master\n3. Loop through each sheet\n4. Create sheet in new spreadsheet\n5. Copy data from master to new\n\n**Required Setup:**\n- Google Sheets OAuth credentials\n- Master spreadsheet ID\n- Proper API permissions"
      },
      "typeVersion": 1
    },
    {
      "id": "start-create-note",
      "name": "시작 및 생성",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1100,
        -50
      ],
      "parameters": {
        "color": 3,
        "width": 280,
        "height": 200,
        "content": "## 🚀 Start & Create\n\n**Manual Trigger:**\n- Click to start workflow\n- No scheduling needed\n\n**Create New Spreadsheet:**\n- Creates destination spreadsheet\n- Update title as needed\n- Stores ID for later use"
      },
      "typeVersion": 1
    },
    {
      "id": "discovery-note",
      "name": "시트 탐색",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -660,
        -50
      ],
      "parameters": {
        "color": 1,
        "width": 280,
        "height": 200,
        "content": "## 🔍 Sheet Discovery\n\n**HTTP Request:**\n- Gets spreadsheet metadata\n- Lists all sheets\n- Uses Google Sheets API v4\n\n**Code Node:**\n- Extracts sheet names\n- Formats for processing\n- Creates sheet array"
      },
      "typeVersion": 1
    },
    {
      "id": "loop-note",
      "name": "루프 처리",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -220,
        -50
      ],
      "parameters": {
        "color": 5,
        "width": 280,
        "height": 200,
        "content": "## 🔄 Loop Processing\n\n**Split In Batches:**\n- Processes one sheet at a time\n- Prevents API overload\n- Maintains order\n\n**Two outputs:**\n1. Done - Removes default Sheet1\n2. Loop - Creates & copies sheets"
      },
      "typeVersion": 1
    },
    {
      "id": "operations-note",
      "name": "시트 작업",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        220,
        -50
      ],
      "parameters": {
        "color": 4,
        "width": 280,
        "height": 200,
        "content": "## 📝 Sheet Operations\n\n**Create Sheets:**\n- Creates new sheet in destination\n- Uses original sheet names\n\n**Read & Write:**\n- Reads from master sheet\n- Writes to new sheet\n- Preserves all columns"
      },
      "typeVersion": 1
    },
    {
      "id": "important-notes",
      "name": "중요 참고사항",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -220,
        420
      ],
      "parameters": {
        "color": 6,
        "width": 300,
        "height": 150,
        "content": "⚠️ **Important Notes:**\n\n1. Replace spreadsheet ID in HTTP Request\n2. Update credentials for all nodes\n3. Default 'Sheet1' is removed after all sheets are created\n4. Column structure must match between sheets"
      },
      "typeVersion": 1
    },
    {
      "id": "21b7267c-eac9-4f90-b345-614bd6d5a276",
      "name": "'워크플로 테스트' 클릭 시",
      "type": "n8n-nodes-base.manualTrigger",
      "notes": "Manual trigger - click to start the spreadsheet duplication process",
      "position": [
        -1100,
        200
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "26e0f233-e990-4b98-8184-599583a64498",
      "name": "HTTP 요청",
      "type": "n8n-nodes-base.httpRequest",
      "notes": "Gets spreadsheet metadata - replace YOUR_MASTER_SPREADSHEET_ID with actual ID",
      "position": [
        -660,
        200
      ],
      "parameters": {
        "url": "https://sheets.googleapis.com/v4/spreadsheets/YOUR_MASTER_SPREADSHEET_ID",
        "options": {},
        "sendHeaders": true,
        "authentication": "predefinedCredentialType",
        "headerParameters": {
          "parameters": [
            {
              "name": "Accept",
              "value": "application/json"
            }
          ]
        },
        "nodeCredentialType": "googleSheetsOAuth2Api"
      },
      "credentials": {
        "httpHeaderAuth": {
          "id": "HTTP_HEADER_CREDENTIAL_ID",
          "name": "API Header Auth"
        },
        "googleSheetsOAuth2Api": {
          "id": "GOOGLE_SHEETS_CREDENTIAL_ID",
          "name": "Google Sheets Account"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "d8a02c3f-8b31-4bb1-9052-33963c09da16",
      "name": "코드",
      "type": "n8n-nodes-base.code",
      "notes": "Extracts sheet names and IDs from API response",
      "position": [
        -440,
        200
      ],
      "parameters": {
        "jsCode": "const spreadsheet = $input.first().json;\nconst sheets = spreadsheet.sheets;\n\n// Create array of sheet names\nconst sheetList = sheets.map(sheet => ({\n  json: {\n    sheetName: sheet.properties.title,\n    sheetId: sheet.properties.sheetId,\n    index: sheet.properties.index\n  }\n}));\n\nreturn sheetList;"
      },
      "typeVersion": 2
    },
    {
      "id": "d45b8f9a-47ad-4280-ba95-d8b10b0351a2",
      "name": "항목 루프",
      "type": "n8n-nodes-base.splitInBatches",
      "notes": "Processes sheets one by one - output 1 when done, output 2 for each iteration",
      "position": [
        -220,
        200
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 3
    },
    {
      "id": "aaff5289-8658-4f5c-b3de-15630e25c537",
      "name": "시트 생성",
      "type": "n8n-nodes-base.googleSheets",
      "notes": "Creates new sheet in destination spreadsheet with original name",
      "position": [
        0,
        200
      ],
      "parameters": {
        "title": "={{ $('Loop Over Items').item.json.sheetName }}",
        "options": {},
        "operation": "create",
        "documentId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $('Create New Spreadsheet').item.json.spreadsheetId }}"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "GOOGLE_SHEETS_CREDENTIAL_ID",
          "name": "Google Sheets Account"
        }
      },
      "typeVersion": 4.5
    },
    {
      "id": "e33a1701-8a90-4e71-8f1a-f517d26894be",
      "name": "시트 작성",
      "type": "n8n-nodes-base.googleSheets",
      "notes": "Writes data to new sheet - preserves all columns from master",
      "position": [
        440,
        275
      ],
      "parameters": {
        "columns": {
          "value": {},
          "schema": [
            {
              "id": "Column1",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Column 1",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Column2",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Column 2",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Column3",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Column 3",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Column4",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Column 4",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Column5",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Column 5",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Column6",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Column 6",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Column7",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Column 7",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Column8",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Column 8",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Column9",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Column 9",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "appendOrUpdate",
        "sheetName": {
          "__rl": true,
          "mode": "name",
          "value": "={{ $('Loop Over Items').item.json.sheetName }}"
        },
        "documentId": {
          "__rl": true,
          "mode": "url",
          "value": "={{ $('Create New Spreadsheet').item.json.spreadsheetUrl }}"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "GOOGLE_SHEETS_CREDENTIAL_ID",
          "name": "Google Sheets Account"
        }
      },
      "typeVersion": 4.5
    },
    {
      "id": "a46aad80-34cf-4f19-aec6-1896296b40d3",
      "name": "Google Sheets2",
      "type": "n8n-nodes-base.googleSheets",
      "notes": "Removes default 'Sheet1' after all sheets are created",
      "position": [
        0,
        0
      ],
      "parameters": {
        "operation": "remove",
        "sheetName": {
          "__rl": true,
          "mode": "name",
          "value": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "url",
          "value": "={{ $('Create New Spreadsheet').item.json.spreadsheetUrl }}"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "GOOGLE_SHEETS_CREDENTIAL_ID",
          "name": "Google Sheets Account"
        }
      },
      "typeVersion": 4.5
    },
    {
      "id": "c8439289-b353-4ac5-a0f2-601e66ddf6fb",
      "name": "스프레드시트1 읽기",
      "type": "n8n-nodes-base.googleSheets",
      "notes": "Reads data from master spreadsheet - one sheet at a time",
      "position": [
        220,
        200
      ],
      "parameters": {
        "options": {},
        "sheetName": {
          "__rl": true,
          "mode": "name",
          "value": "={{ $('Loop Over Items').item.json.sheetName }}"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "YOUR_MASTER_SPREADSHEET_ID",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/YOUR_MASTER_SPREADSHEET_ID/edit",
          "cachedResultName": "Master Spreadsheet"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "GOOGLE_SHEETS_CREDENTIAL_ID",
          "name": "Google Sheets Account"
        }
      },
      "typeVersion": 4.5
    },
    {
      "id": "2de35627-e071-4f39-9ea7-2e1fa0d56f7c",
      "name": "새 스프레드시트 생성",
      "type": "n8n-nodes-base.googleSheets",
      "notes": "Creates new destination spreadsheet - update title as needed",
      "position": [
        -880,
        200
      ],
      "parameters": {
        "title": "Copy of Master Spreadsheet",
        "options": {},
        "resource": "spreadsheet"
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "GOOGLE_SHEETS_CREDENTIAL_ID",
          "name": "Google Sheets Account"
        }
      },
      "typeVersion": 4.5
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "YOUR_VERSION_ID",
  "connections": {
    "d8a02c3f-8b31-4bb1-9052-33963c09da16": {
      "main": [
        [
          {
            "node": "d45b8f9a-47ad-4280-ba95-d8b10b0351a2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "e33a1701-8a90-4e71-8f1a-f517d26894be": {
      "main": [
        [
          {
            "node": "d45b8f9a-47ad-4280-ba95-d8b10b0351a2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "26e0f233-e990-4b98-8184-599583a64498": {
      "main": [
        [
          {
            "node": "d8a02c3f-8b31-4bb1-9052-33963c09da16",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "aaff5289-8658-4f5c-b3de-15630e25c537": {
      "main": [
        [
          {
            "node": "c8439289-b353-4ac5-a0f2-601e66ddf6fb",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "d45b8f9a-47ad-4280-ba95-d8b10b0351a2": {
      "main": [
        [
          {
            "node": "a46aad80-34cf-4f19-aec6-1896296b40d3",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "aaff5289-8658-4f5c-b3de-15630e25c537",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "c8439289-b353-4ac5-a0f2-601e66ddf6fb": {
      "main": [
        [
          {
            "node": "e33a1701-8a90-4e71-8f1a-f517d26894be",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "2de35627-e071-4f39-9ea7-2e1fa0d56f7c": {
      "main": [
        [
          {
            "node": "26e0f233-e990-4b98-8184-599583a64498",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "21b7267c-eac9-4f90-b345-614bd6d5a276": {
      "main": [
        [
          {
            "node": "2de35627-e071-4f39-9ea7-2e1fa0d56f7c",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
자주 묻는 질문

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

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

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

중급 - 인공지능, IT 운영

유료인가요?

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

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

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

저자
Amit Mehta

Amit Mehta

@amitswba

I'm a workflow automation expert with 15+ years in IT industry. I build smart, scalable n8n workflows for AI automation, marketing, CRM, and SaaS integrations. My focus is on simplifying business processes with tools like OpenAI, WhatsApp, Gmail, and Airtable. I help teams and solopreneurs automate smarter, reduce manual tasks, and grow faster—one workflow at a time.

외부 링크
n8n.io에서 보기

이 워크플로우 공유

카테고리

카테고리: 34