Weekly CSV backup of a Google Sheet
Save a dated CSV copy of an important sheet to Google Drive every week.
How it works
Trigger: Schedule — every Sunday at 23:00
- Read all rows from the sheet.
- Convert them to a CSV file named with today's date.
- Upload the file to a Backups folder in Drive.
Diagram
Trigger App Logic
Build it
Pick your tool — same automation, step by step.
Copy and paste straight into an n8n canvas (Ctrl+V), or download and use Import from File. Then connect your own credentials and replace every YOUR_… placeholder.
Show code (151 lines)
{
"name": "Weekly CSV backup of a Google Sheet (Flowngn)",
"nodes": [
{
"parameters": {
"content": "## Weekly CSV backup of a Google Sheet\nSave a dated CSV copy of an important sheet to Google Drive every week.\n\n**Setup**\n1. Open each node and connect your own credentials.\n2. Replace every YOUR_… placeholder.\n3. Test once, then activate.\n\nFree template from Flowngn",
"height": 260,
"width": 340
},
"id": "26068bc2-eac9-4e99-a8cb-b57353c0cdce",
"name": "Setup notes",
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
-420,
-60
]
},
{
"parameters": {
"rule": {
"interval": [
{
"field": "weeks",
"triggerAtDay": [
0
],
"triggerAtHour": 23
}
]
}
},
"id": "26068bc2-eac9-4e99-a8cb-b57353c0cdce",
"name": "Sundays 23:00",
"type": "n8n-nodes-base.scheduleTrigger",
"typeVersion": 1.2,
"position": [
0,
0
]
},
{
"parameters": {
"operation": "read",
"documentId": {
"__rl": true,
"value": "YOUR_SPREADSHEET_ID",
"mode": "id"
},
"sheetName": {
"__rl": true,
"value": "Sheet1",
"mode": "name"
},
"options": {}
},
"id": "26068bc2-eac9-4e99-a8cb-b57353c0cdce",
"name": "Read sheet",
"type": "n8n-nodes-base.googleSheets",
"typeVersion": 4.5,
"position": [
300,
0
]
},
{
"parameters": {
"operation": "csv",
"options": {
"fileName": "=backup-{{ $today.toISODate() }}.csv"
}
},
"id": "26068bc2-eac9-4e99-a8cb-b57353c0cdce",
"name": "Convert to CSV",
"type": "n8n-nodes-base.convertToFile",
"typeVersion": 1.1,
"position": [
600,
0
]
},
{
"parameters": {
"name": "=backup-{{ $today.toISODate() }}.csv",
"driveId": {
"__rl": true,
"value": "My Drive",
"mode": "list"
},
"folderId": {
"__rl": true,
"value": "YOUR_BACKUPS_FOLDER_ID",
"mode": "id"
},
"inputDataFieldName": "data",
"options": {}
},
"id": "26068bc2-eac9-4e99-a8cb-b57353c0cdce",
"name": "Upload to Backups",
"type": "n8n-nodes-base.googleDrive",
"typeVersion": 3,
"position": [
900,
0
]
}
],
"connections": {
"Sundays 23:00": {
"main": [
[
{
"node": "Read sheet",
"type": "main",
"index": 0
}
]
]
},
"Read sheet": {
"main": [
[
{
"node": "Convert to CSV",
"type": "main",
"index": 0
}
]
]
},
"Convert to CSV": {
"main": [
[
{
"node": "Upload to Backups",
"type": "main",
"index": 0
}
]
]
}
},
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"meta": {
"templateCredsSetupCompleted": false
},
"tags": []
}In Make, create a new scenario and add these modules in order:
- Schedule the scenario: Sundays 23:00
- Google Sheets › Search Rows
- CSV › Create CSV
- Google Drive › Upload a File
- Every module run uses Make operations — the free plan includes a monthly quota.
- Module and step names can differ slightly as Make and Zapier update their apps.
In Zapier, create a new Zap and add these steps in order:
- Schedule by Zapier — Sundays 23:00
- Google Sheets — Lookup Spreadsheet Rows (or Code by Zapier)
- Google Drive — Create File from Text (CSV)
- Google Drive — Upload File
- Zaps with more than two steps need a paid Zapier plan.
- Module and step names can differ slightly as Make and Zapier update their apps.
Tips
- Duplicate the flow for each important sheet.
Related flows
Developer & ITEasy
New GitHub issues in Slack
Every new issue in your repo is posted to your team's Slack channel.
GitHub → Slack1h/mo
Developer & ITEasy
Free website uptime monitor
Check your website every 5 minutes and get a Telegram alert if it goes down.
HTTP Request → Telegram4h/mo
Developer & ITEasy
Announce GitHub releases in Slack
When you publish a release, your team or community sees the notes instantly.
GitHub → Slack1h/mo