AutomationFlowsEmail & Gmail › Automated n8n Workflow Backup to Google Drive

Automated n8n Workflow Backup to Google Drive

Original n8n title: Limit Code (n8n)

Limit Code. Uses scheduleTrigger, n8n, googleDrive, splitInBatches. Scheduled trigger; 29 nodes.

Cron / scheduled trigger★★★★☆ complexity29 nodesn8nGoogle DriveExecution DataGmailExecute Workflow TriggerDiscord
Email & Gmail Trigger: Cron / scheduled Nodes: 29 Complexity: ★★★★☆ Added:

This workflow follows the Execute Workflow Trigger → Gmail recipe pattern — see all workflows that pair these two integrations.

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "nodes": [
    {
      "id": "d74c545f-17ab-47f7-bb2a-93c9e9673bab",
      "name": "Schedule Trigger",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        460,
        -20
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "triggerAtHour": 1,
              "triggerAtMinute": 30
            }
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "fc54b674-dc64-49ad-819d-66a4e416efc2",
      "name": "Get all n8n Workflows",
      "type": "n8n-nodes-base.n8n",
      "position": [
        680,
        -20
      ],
      "parameters": {
        "filters": {},
        "requestOptions": {}
      },
      "credentials": {
        "n8nApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "b23cd260-8e68-42e7-935c-a658ae35cccd",
      "name": "Backup to Google Drive2",
      "type": "n8n-nodes-base.googleDrive",
      "onError": "continueErrorOutput",
      "position": [
        1260,
        400
      ],
      "parameters": {
        "fileId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $json.id }}"
        },
        "options": {},
        "operation": "update",
        "changeFileContent": true,
        "newUpdatedFileName": "={{  $('Workflow Data').item.json.name + \"_\" + $('Workflow Data').item.json.id+ \".json\"}}"
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "retryOnFail": true,
      "typeVersion": 3
    },
    {
      "id": "29a69d92-f416-489d-9a96-3a22844556e0",
      "name": "Loop Over Items",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        920,
        -20
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 3
    },
    {
      "id": "ddee56fd-8610-4cae-9ae0-76e58e7fd111",
      "name": "Backup to Google Drive4",
      "type": "n8n-nodes-base.googleDrive",
      "onError": "continueErrorOutput",
      "position": [
        1380,
        720
      ],
      "parameters": {
        "name": "={{  $('Workflow Data').item.json.name + \"_\" + $('Workflow Data').item.json.id+ \".json\"}}",
        "driveId": {
          "__rl": true,
          "mode": "list",
          "value": "My Drive"
        },
        "options": {},
        "folderId": {
          "__rl": true,
          "mode": "list",
          "value": "13clPf8pnv_-GLeeNXLhuVzQiqnKo_7Ev",
          "cachedResultUrl": "https://drive.google.com/drive/folders/13clPf8pnv_-GLeeNXLhuVzQiqnKo_7Ev",
          "cachedResultName": "n8nWorkflows"
        }
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "retryOnFail": true,
      "typeVersion": 3
    },
    {
      "id": "8fdf83b1-5884-45a2-8710-e9012c07ccca",
      "name": "ifDriveEmpty",
      "type": "n8n-nodes-base.if",
      "position": [
        680,
        420
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "5ec1b850-e0ce-4bd6-a8be-504e01825c00",
              "operator": {
                "type": "string",
                "operation": "exists",
                "singleValue": true
              },
              "leftValue": "={{$('getDriveFileData').item.json.name}}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "01437168-bb55-4308-a83c-a26c0f9c1843",
      "name": "firstWorkflowJson",
      "type": "n8n-nodes-base.set",
      "position": [
        1000,
        720
      ],
      "parameters": {
        "mode": "raw",
        "options": {},
        "jsonOutput": "={{ $('Workflow Data').item.json.toJsonString() }}\n"
      },
      "typeVersion": 3.4
    },
    {
      "id": "7bcb95db-b13b-4bef-9a34-acd1194f6d96",
      "name": "JsonToFile",
      "type": "n8n-nodes-base.code",
      "position": [
        1180,
        720
      ],
      "parameters": {
        "jsCode": "return items.map(item => {\n  const jsonData = JSON.stringify(item.json);\n  const binaryData = Buffer.from(jsonData).toString('base64');\n  item.binary = {\n    data: {\n      data: binaryData,\n      mimeType: 'application/json',\n      fileName: 'data.json'\n    }\n  };\n  return item;\n});"
      },
      "typeVersion": 2
    },
    {
      "id": "efdb7ea6-f4bf-4553-993c-448cd7bb2039",
      "name": "CodeJsonToFile1",
      "type": "n8n-nodes-base.code",
      "position": [
        1080,
        400
      ],
      "parameters": {
        "jsCode": "return items.map(item => {\n  const jsonData = JSON.stringify( $('Workflow Data').item.json);\n  const binaryData = Buffer.from(jsonData).toString('base64');\n  item.binary = {\n    data: {\n      data: binaryData,\n      mimeType: 'application/json',\n      fileName: 'data.json'\n    }\n  };\n  return item;\n});"
      },
      "typeVersion": 2
    },
    {
      "id": "411b1585-4be1-4a92-a54b-64965f0d529d",
      "name": "Limit",
      "type": "n8n-nodes-base.limit",
      "position": [
        1100,
        -40
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "dcd2e2ee-fc18-47bc-9210-b1b42c270961",
      "name": "Workflow Data",
      "type": "n8n-nodes-base.executionData",
      "position": [
        -140,
        420
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "d243a474-9139-4af4-8134-df815a4af806",
      "name": "successEmail",
      "type": "n8n-nodes-base.gmail",
      "position": [
        1360,
        -40
      ],
      "parameters": {
        "sendTo": "your email address",
        "message": "={{ $now.format('yyyy-MM-dd HH:mm') }} workflow backup success.",
        "options": {},
        "subject": "google drive workflow backup success",
        "emailType": "text"
      },
      "credentials": {
        "gmailOAuth2": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "306a1d38-27ef-4249-956a-cfec30d898b1",
      "name": "failureEmail",
      "type": "n8n-nodes-base.gmail",
      "position": [
        1620,
        420
      ],
      "parameters": {
        "sendTo": "your email address",
        "message": "={{ $now }} {{ $('Workflow Data').item.json.name }} workflow backup .",
        "options": {},
        "subject": "google drive workflow backup error",
        "emailType": "text"
      },
      "credentials": {
        "gmailOAuth2": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "544cb91c-4f96-4a84-8db2-9c88e758a1e3",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        600,
        -80
      ],
      "parameters": {
        "color": 5,
        "width": 260,
        "height": 220,
        "content": "## Set n8n API"
      },
      "typeVersion": 1
    },
    {
      "id": "84d6b3e9-9f01-40b8-980d-acd2f95d30fe",
      "name": "Sticky Note7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        600,
        -180
      ],
      "parameters": {
        "color": 4,
        "width": 150,
        "height": 80,
        "content": "## Edit this node \ud83d\udc47"
      },
      "typeVersion": 1
    },
    {
      "id": "a3f1669b-41da-4256-af2c-e556738eabf1",
      "name": "getDriveFileData",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        300,
        420
      ],
      "parameters": {
        "filter": {
          "folderId": {
            "__rl": true,
            "mode": "url",
            "value": "={{ $('Parameters').item.json.directory }}"
          },
          "whatToSearch": "files"
        },
        "options": {},
        "resource": "fileFolder",
        "returnAll": true,
        "queryString": "={{  $('Workflow Data').item.json.name + \"_\" + $('Workflow Data').item.json.id+ \".json\"}}"
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "retryOnFail": true,
      "typeVersion": 3,
      "alwaysOutputData": true
    },
    {
      "id": "f1771f9e-4153-4595-bbd9-22abfef23c54",
      "name": "When Executed by Another Workflow",
      "type": "n8n-nodes-base.executeWorkflowTrigger",
      "position": [
        -300,
        420
      ],
      "parameters": {
        "inputSource": "passthrough"
      },
      "typeVersion": 1.1
    },
    {
      "id": "7110911a-c6c6-4ef6-888f-f640784d077b",
      "name": "Execute Workflow",
      "type": "n8n-nodes-base.executeWorkflow",
      "position": [
        1100,
        100
      ],
      "parameters": {
        "options": {},
        "workflowId": {
          "__rl": true,
          "mode": "id",
          "value": "DfMF9CmVw6FU4hYm"
        },
        "workflowInputs": {
          "value": {},
          "schema": [],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": true
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "cb5cc7fb-f24f-48be-a175-c24bf830dce2",
      "name": "Parameters",
      "type": "n8n-nodes-base.set",
      "position": [
        20,
        420
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "1b65def6-4984-497d-a4bc-232af22927ad",
              "name": "directory",
              "type": "string",
              "value": "https://drive.google.com/drive/folders/13clPf8pnv_-GLeeNXLhuVzQiqnKo_7Ev?usp=share_link"
            },
            {
              "id": "c8c98f88-9f22-4574-88b8-1db99f6e4ec4",
              "name": "parentdrive",
              "type": "string",
              "value": "https://drive.google.com/drive/u/0/my-drive"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "0ab79967-aa4e-4914-abbd-8a60057b083d",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -20,
        300
      ],
      "parameters": {
        "color": 4,
        "width": 150,
        "height": 80,
        "content": "## Edit this node \ud83d\udc47"
      },
      "typeVersion": 1
    },
    {
      "id": "948c9276-88a7-4d02-85dc-525c4e8b0c01",
      "name": "Sticky Note10",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1240,
        -100
      ],
      "parameters": {
        "width": 340,
        "height": 220,
        "content": "## Send complete message"
      },
      "typeVersion": 1
    },
    {
      "id": "cabf9b91-5a2f-4c8f-ae07-318fca57b54f",
      "name": "Discord",
      "type": "n8n-nodes-base.discord",
      "position": [
        1360,
        80
      ],
      "parameters": {
        "content": "={{ $now.format('yyyy-MM-dd HH:mm') }} Google Drive workflow backup success.",
        "guildId": {
          "__rl": true,
          "mode": "list",
          "value": ""
        },
        "options": {
          "tts": false
        },
        "resource": "message",
        "channelId": {
          "__rl": true,
          "mode": "list",
          "value": "1365663078880116756",
          "cachedResultUrl": "https://discord.com/channels/1365624783781494854/1365663078880116756",
          "cachedResultName": "backup-status"
        }
      },
      "credentials": {
        "discordBotApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "ea46a8fb-5a43-400e-85d6-602ef1c68c5e",
      "name": "Sticky Note8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        20,
        -280
      ],
      "parameters": {
        "color": 7,
        "width": 370,
        "height": 480,
        "content": "## \u91cd\u8981\uff01 \ud83d\udc47\n\n**\u555f\u52d5\u524d\uff1a **\n\n### \u4f5c\u8005\u8cc7\u8a0a\u8207\u8cc7\u6e90\n\u4f5c\u8005\uff1aHochien Chang\nYouTube \u983b\u9053\uff1a[HC AI\u8aaa\u4eba\u8a71](https://www.youtube.com/channel/UCvGfUB-wBdG4i_TdDGBCwJg)\n\u8aaa\u660e\u5f71\u7247\u9023\u7d50\uff1a https://youtu.be/PA15H5qunC0\n\n1.  **\u66f4\u65b0\u8a8d\u8b49\uff1a** \u78ba\u8a8d\u5df2\u8a2d\u5b9a\u300cGoogle Drive OAuth2 API\u300d\u8a8d\u8b49\u3002\n2.  **\u8a2d\u5b9a\u53c3\u6578\uff1a** \u7de8\u8f2f\u300c\u53c3\u6578\u300d\u7bc0\u9ede\uff0c\u8a2d\u5b9a\u6240\u9700\u7684 Google Drive \u8cc7\u6599\u593e URL\u3002\n3.  **\u8a2d\u5b9a\u96fb\u5b50\u90f5\u4ef6\uff1a** \u4f7f\u7528\u60a8\u7684\u6536\u4ef6\u8005\u96fb\u5b50\u90f5\u4ef6\u5730\u5740\u66f4\u65b0\u300cGmail\u300d\u7bc0\u9ede\u3002\n\n\n\u53c3\u8003\u5de5\u4f5c\u6d41\uff1ahttps://n8n.io/workflows/3112-backup-n8n-workflows-to-google-drive/"
      },
      "typeVersion": 1
    },
    {
      "id": "af7f9d0e-6ce4-4277-801d-92bf05a424d6",
      "name": "Sticky Note9",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -380,
        -280
      ],
      "parameters": {
        "color": 7,
        "width": 390,
        "height": 480,
        "content": "### IMPORTANT! \ud83d\udc47\n\n**Before activating:**\n### Author Information and Resources\nCreator\uff1aHochien Chang\nYouTube \u983b\u9053\uff1a[HC HumanizeAI](www.youtube.com/@HC-HumanizeAI)\nExplanation Video Link: https://youtu.be/PA15H5qunC0\n\n1.  **Update Credentials:** Ensure 'Google Drive OAuth2 API' credentials are set up.\n2.  **Configure Parameters:** Edit the 'Parameters' node to set your desired Google Drive folder URL.\n3.  **Set Email:** Update the 'Gmail' nodes with your recipient email address.\n\n\nBase on: https://n8n.io/workflows/3112-backup-n8n-workflows-to-google-drive/"
      },
      "typeVersion": 1
    },
    {
      "id": "f24c9b0c-1bf4-40dc-9492-8c452e5d9905",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        920,
        600
      ],
      "parameters": {
        "color": 3,
        "width": 620,
        "height": 300,
        "content": "## \u65b0\u5de5\u4f5c\u6d41\u4e0a\u50b3\n## New Workflow upload\ud83d\udc47"
      },
      "typeVersion": 1
    },
    {
      "id": "dac5bca9-9d7f-4131-a563-9115bf0528cc",
      "name": "Sticky Note11",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        920,
        300
      ],
      "parameters": {
        "color": 6,
        "width": 620,
        "height": 280,
        "content": "## \u73fe\u6709\u5de5\u4f5c\u6d41\u66f4\u65b0\n## existing Workflow update\ud83d\udc47"
      },
      "typeVersion": 1
    },
    {
      "id": "6d126534-8b9b-4935-bce7-471ecc931e83",
      "name": "Sticky Note12",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        140,
        300
      ],
      "parameters": {
        "width": 440,
        "height": 280,
        "content": "## \u53d6\u5f97 Google Drive \u73fe\u6709\u7684\u6a94\u6848\u8cc7\u8a0a\n## Get Google Drive existing file info\ud83d\udc47"
      },
      "typeVersion": 1
    },
    {
      "id": "2ed623f4-faca-40ea-9ace-ab6d0933f6ba",
      "name": "Sticky Note13",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        580,
        300
      ],
      "parameters": {
        "color": 4,
        "width": 320,
        "height": 280,
        "content": "## \u78ba\u8a8d\u662f\u5426\u70ba\u7b2c\u4e00\u6b21\u5099\u4efd\n## Only for initialing\ud83d\udc47"
      },
      "typeVersion": 1
    },
    {
      "id": "46f0dbdc-4023-426c-b87b-3431817981c0",
      "name": "Sticky Note14",
      "type": "n8n-nodes-base.stickyNote",
      "disabled": true,
      "position": [
        -380,
        -380
      ],
      "parameters": {
        "color": 6,
        "width": 760,
        "height": 80,
        "content": "# HC AI \u8aaa\u4eba\u8a71"
      },
      "typeVersion": 1
    }
  ],
  "connections": {
    "Limit": {
      "main": [
        [
          {
            "node": "successEmail",
            "type": "main",
            "index": 0
          },
          {
            "node": "Discord",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "JsonToFile": {
      "main": [
        [
          {
            "node": "Backup to Google Drive4",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Parameters": {
      "main": [
        [
          {
            "node": "getDriveFileData",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "ifDriveEmpty": {
      "main": [
        [
          {
            "node": "CodeJsonToFile1",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "firstWorkflowJson",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Workflow Data": {
      "main": [
        [
          {
            "node": "Parameters",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "CodeJsonToFile1": {
      "main": [
        [
          {
            "node": "Backup to Google Drive2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop Over Items": {
      "main": [
        [
          {
            "node": "Limit",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Execute Workflow",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Execute Workflow": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Schedule Trigger": {
      "main": [
        [
          {
            "node": "Get all n8n Workflows",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "getDriveFileData": {
      "main": [
        [
          {
            "node": "ifDriveEmpty",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "firstWorkflowJson": {
      "main": [
        [
          {
            "node": "JsonToFile",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get all n8n Workflows": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Backup to Google Drive2": {
      "main": [
        [],
        [
          {
            "node": "failureEmail",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Backup to Google Drive4": {
      "main": [
        [],
        [
          {
            "node": "failureEmail",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "When Executed by Another Workflow": {
      "main": [
        [
          {
            "node": "Workflow Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

Credentials you'll need

Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

How this works

Regularly backing up your n8n workflows ensures you never lose critical automations due to unexpected issues, providing peace of mind for teams reliant on seamless operations. This workflow automates the process by fetching all your n8n workflows and securely storing them as JSON files in Google Drive, ideal for developers, IT admins, or businesses managing multiple automations. The key step involves looping through each workflow with splitInBatches to handle backups efficiently, even for large setups, while conditional checks prevent overwriting existing files.

Use this workflow when you need automated, scheduled backups to Google Drive to safeguard against data loss, especially in production environments with frequent updates. Avoid it for one-off manual exports, where n8n's built-in download suffices, or if your workflows contain sensitive data requiring on-premises storage. Common variations include adding Gmail notifications for backup completion or integrating Discord alerts for failures, tailoring it to your notification preferences.

About this workflow

Limit Code. Uses scheduleTrigger, n8n, googleDrive, splitInBatches. Scheduled trigger; 29 nodes.

Source: https://github.com/Zie619/n8n-workflows — original creator credit. Request a take-down →

More Email & Gmail workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

Email & Gmail

This workflow automates the backup of all your n8n workflows to a specified Google Drive folder. It operates in two main phases: Orchestration (Scheduled Task): The workflow is initiated by a Schedule

n8n, Google Drive, Execution Data +3
Email & Gmail

YOUR_ID 4. Uses gmail, googleDrive, googleSheets, httpRequest. Scheduled trigger; 53 nodes.

Gmail, Google Drive, Google Sheets +1
Email & Gmail

This n8n template demonstrates how to build a Auto Lead Gen & Outreach System for Local Businesses specifically designed to help businesses that don’t have a website yet.

Google Sheets, HTTP Request, Google Drive +1
Email & Gmail

This workflow automates the complete end-to-end processing of daily revenue transactions for finance and accounting teams. It systematically retrieves, validates, and standardizes transaction data fro

HTTP Request, Gmail, Google Drive +2
Email & Gmail

This n8n workflow is designed for website administrators, digital marketers, SEO specialists, and business owners who want to continuously monitor their website performance metrics. It provides a comp

Google Sheets, HTTP Request, Discord +2