구글 시트 복사 워크플로우
이것은AI, IT Ops분야의자동화 워크플로우로, 15개의 노드를 포함합니다.주로 Code, HttpRequest, GoogleSheets, ManualTrigger, SplitInBatches 등의 노드를 사용하며인공지능 기술을 결합하여 스마트 자동화를 구현합니다. 구글 시트 복사 및 풍부 자동화
- •대상 API의 인증 정보가 필요할 수 있음
- •Google Sheets API 인증 정보
{
"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)는 사용자 직접 비용을 지불해야 할 수 있습니다.
관련 워크플로우 추천
Amit Mehta
@amitswbaI'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.
이 워크플로우 공유