Flujo de trabajo de copia de Google Sheets

Intermedio

Este es unAI, IT Opsflujo de automatización del dominio deautomatización que contiene 15 nodos.Utiliza principalmente nodos como Code, HttpRequest, GoogleSheets, ManualTrigger, SplitInBatches, combinando tecnología de inteligencia artificial para lograr automatización inteligente. Automatización de copia y enriquecimiento en Google Sheets

Requisitos previos
  • Pueden requerirse credenciales de autenticación para la API de destino
  • Credenciales de API de Google Sheets
Vista previa del flujo de trabajo
Visualización de las conexiones entre nodos, con soporte para zoom y panorámica
Exportar flujo de trabajo
Copie la siguiente configuración JSON en n8n para importar y usar este flujo de trabajo
{
  "meta": {
    "instanceId": "YOUR_INSTANCE_ID"
  },
  "name": "Google Sheets Duplication Workflow",
  "tags": [],
  "nodes": [
    {
      "id": "workflow-overview-sheets",
      "name": "Descripción general del flujo",
      "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": "Inicio y creación",
      "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": "Detección de hojas",
      "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": "Procesamiento en bucle",
      "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": "Operaciones de hoja",
      "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": "Notas importantes",
      "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": "Al hacer clic en 'Probar flujo'",
      "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": "Solicitud 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": "Código",
      "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": "Recorrer elementos",
      "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": "Create Sheets",
      "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": "Write sheet",
      "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": "Hojas de Google2",
      "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": "Read Spreadsheet1",
      "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": "Create New Spreadsheet",
      "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": {
    "Code": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "e33a1701-8a90-4e71-8f1a-f517d26894be": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "HTTP Request": {
      "main": [
        [
          {
            "node": "Code",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "aaff5289-8658-4f5c-b3de-15630e25c537": {
      "main": [
        [
          {
            "node": "c8439289-b353-4ac5-a0f2-601e66ddf6fb",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop Over Items": {
      "main": [
        [
          {
            "node": "Google Sheets2",
            "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": "HTTP Request",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "21b7267c-eac9-4f90-b345-614bd6d5a276": {
      "main": [
        [
          {
            "node": "2de35627-e071-4f39-9ea7-2e1fa0d56f7c",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
Preguntas frecuentes

¿Cómo usar este flujo de trabajo?

Copie el código de configuración JSON de arriba, cree un nuevo flujo de trabajo en su instancia de n8n y seleccione "Importar desde JSON", pegue la configuración y luego modifique la configuración de credenciales según sea necesario.

¿En qué escenarios es adecuado este flujo de trabajo?

Intermedio - Inteligencia Artificial, Operaciones de TI

¿Es de pago?

Este flujo de trabajo es completamente gratuito, puede importarlo y usarlo directamente. Sin embargo, tenga en cuenta que los servicios de terceros utilizados en el flujo de trabajo (como la API de OpenAI) pueden requerir un pago por su cuenta.

Información del flujo de trabajo
Nivel de dificultad
Intermedio
Número de nodos15
Categoría2
Tipos de nodos6
Descripción de la dificultad

Adecuado para usuarios con experiencia intermedia, flujos de trabajo de complejidad media con 6-15 nodos

Autor
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.

Enlaces externos
Ver en n8n.io

Compartir este flujo de trabajo

Categorías

Categorías: 34