This workflow follows the Google Drive → Google Sheets 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 →
{
"name": "Rodopi Dent - Daily Backup",
"nodes": [
{
"parameters": {
"rule": {
"interval": [
{
"triggerAtHour": 23,
"triggerAtMinute": 0
}
]
}
},
"id": "schedule",
"name": "Daily at 23:00",
"type": "n8n-nodes-base.scheduleTrigger",
"typeVersion": 1.2,
"position": [
0,
0
]
},
{
"parameters": {
"operation": "read",
"documentId": {
"__rl": true,
"mode": "id",
"value": "1hv4XAfHhScA40Bm1kQ3I-Ih4SJuCBpOJxTOYDNb167g"
},
"sheetName": {
"__rl": true,
"mode": "name",
"value": "Appointments"
},
"options": {
"returnAllMatches": true
}
},
"id": "read-appointments",
"name": "Read Appointments",
"type": "n8n-nodes-base.googleSheets",
"typeVersion": 4.5,
"position": [
220,
-150
],
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"operation": "read",
"documentId": {
"__rl": true,
"mode": "id",
"value": "1hv4XAfHhScA40Bm1kQ3I-Ih4SJuCBpOJxTOYDNb167g"
},
"sheetName": {
"__rl": true,
"mode": "name",
"value": "Finance"
},
"options": {
"returnAllMatches": true
}
},
"id": "read-finance",
"name": "Read Finance",
"type": "n8n-nodes-base.googleSheets",
"typeVersion": 4.5,
"position": [
220,
0
],
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"operation": "read",
"documentId": {
"__rl": true,
"mode": "id",
"value": "1hv4XAfHhScA40Bm1kQ3I-Ih4SJuCBpOJxTOYDNb167g"
},
"sheetName": {
"__rl": true,
"mode": "name",
"value": "Settings"
},
"options": {
"returnAllMatches": true
}
},
"id": "read-settings",
"name": "Read Settings",
"type": "n8n-nodes-base.googleSheets",
"typeVersion": 4.5,
"position": [
220,
150
],
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"jsCode": "// Collect all data from previous nodes\nconst appointments = $('Read Appointments').all().map(i => i.json);\nconst finance = $('Read Finance').all().map(i => i.json);\nconst settings = $('Read Settings').all().map(i => i.json);\n\nconst today = new Date();\nconst dateStr = today.toISOString().split('T')[0];\nconst timeStr = today.toISOString().split('T')[1].substring(0, 8).replace(/:/g, '-');\n\nconst backup = {\n backupDate: today.toISOString(),\n fileName: `rodopi-dent-backup-${dateStr}_${timeStr}.json`,\n data: {\n appointments: appointments,\n finance: finance,\n settings: settings\n },\n stats: {\n appointmentsCount: appointments.length,\n financeCount: finance.length,\n settingsCount: settings.length\n }\n};\n\nreturn [{ json: backup }];"
},
"id": "merge-data",
"name": "Merge All Data",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
500,
0
]
},
{
"parameters": {
"operation": "upload",
"folderId": {
"__rl": true,
"mode": "id",
"value": ""
},
"name": "={{ $json.fileName }}",
"options": {},
"inputDataFieldName": "={{ JSON.stringify($json.data) }}"
},
"id": "upload-drive",
"name": "Upload to Drive",
"type": "n8n-nodes-base.googleDrive",
"typeVersion": 3,
"position": [
720,
0
],
"credentials": {
"googleDriveOAuth2Api": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"jsCode": "// Log backup completion\nconst backup = $('Merge All Data').first().json;\nconst driveResult = $('Upload to Drive').first().json;\n\nconsole.log(`Backup completed: ${backup.fileName}`);\nconsole.log(`Stats: ${JSON.stringify(backup.stats)}`);\n\nreturn [{\n json: {\n success: true,\n fileName: backup.fileName,\n stats: backup.stats,\n driveFileId: driveResult.id || 'N/A',\n completedAt: new Date().toISOString()\n }\n}];"
},
"id": "log-result",
"name": "Log Result",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
940,
0
]
}
],
"connections": {
"Daily at 23:00": {
"main": [
[
{
"node": "Read Appointments",
"type": "main",
"index": 0
},
{
"node": "Read Finance",
"type": "main",
"index": 0
},
{
"node": "Read Settings",
"type": "main",
"index": 0
}
]
]
},
"Read Appointments": {
"main": [
[
{
"node": "Merge All Data",
"type": "main",
"index": 0
}
]
]
},
"Read Finance": {
"main": [
[
{
"node": "Merge All Data",
"type": "main",
"index": 0
}
]
]
},
"Read Settings": {
"main": [
[
{
"node": "Merge All Data",
"type": "main",
"index": 0
}
]
]
},
"Merge All Data": {
"main": [
[
{
"node": "Upload to Drive",
"type": "main",
"index": 0
}
]
]
},
"Upload to Drive": {
"main": [
[
{
"node": "Log Result",
"type": "main",
"index": 0
}
]
]
}
},
"settings": {
"executionOrder": "v1"
},
"tags": [
{
"name": "Rodopi Dent"
}
]
}
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.
googleDriveOAuth2ApigoogleSheetsOAuth2Api
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Rodopi Dent - Daily Backup. Uses googleSheets, googleDrive. Scheduled trigger; 7 nodes.
Source: https://github.com/Georgi-Piskov/RODOPI-DENT/blob/ad5b6829b5d1009f64d2cce3db8393d3c11947c2/n8n-workflows/07-daily-backup.json — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
This workflow monitors Google Calendar for events indicating that a customer will visit the company today or the next day, retrieves the required details, and sends reminder notifications to the relev
LefBot — V1 Master Pipeline (11 Feb). Uses googleSheets, httpRequest, googleDrive. Scheduled trigger; 37 nodes.
LefBot V1 Master Pipeline 11Feb. Uses googleSheets, httpRequest, googleDrive. Scheduled trigger; 37 nodes.
LefBot — V1 Master Pipeline (11 Feb v2). Uses googleSheets, httpRequest, googleDrive. Scheduled trigger; 37 nodes.
Googledrive Workflow. Uses googleDrive, httpRequest, googleSheets, linear. Scheduled trigger; 34 nodes.