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 →
{
"id": "ieTfr3OU6NUM9CL4",
"meta": {
"templateCredsSetupCompleted": true
},
"name": "Preventing Google Sheets Quota Errors during Batch Processing",
"tags": [],
"nodes": [
{
"id": "8f508825-ec55-4d49-b7de-c7cddd2e8529",
"name": "When clicking \u2018Execute workflow\u2019",
"type": "n8n-nodes-base.manualTrigger",
"position": [
0,
288
],
"parameters": {},
"typeVersion": 1
},
{
"id": "e4e6bcaa-df68-4057-8515-4fe30ccadd08",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
0,
-144
],
"parameters": {
"width": 972,
"height": 280,
"content": "## Preventing Google Sheets Quota Errors during Batch Processing\n\nThis template provides a robust solution for dealing with Google Sheets API rate limits. It is designed for workflows that update a large number of rows in a Google Sheet and frequently fail with \"too many requests\" errors.\n\nThe template uses a `Wait` node connected to the error output of the Google Sheets node, creating a retry loop that delays execution for a set period before attempting the update again.\n\nTo use this template, simply replace the placeholder Google Sheets nodes with your own credentials and sheet. You can find an example Google Sheet for this template [here](https://docs.google.com/spreadsheets/d/1hKwP2_G6EaVSJlqWH1zYMVjarb9cuBx78D_U3HBrdhQ/edit?usp=sharing).\n\nFor a full explanation of this approach, check out the blog post [here](https://n8nplaybook.com/post/2025/07/handling-google-sheets-api-rate-limits-in-n8n/)."
},
"typeVersion": 1
},
{
"id": "916c78c0-38a6-4fc6-a3b2-aa74fd189f92",
"name": "Loop Over Items",
"type": "n8n-nodes-base.splitInBatches",
"position": [
448,
192
],
"parameters": {
"options": {}
},
"typeVersion": 3
},
{
"id": "63facfe2-c4b3-4a20-89b8-46c8515f8db1",
"name": "Edit Fields",
"type": "n8n-nodes-base.set",
"position": [
672,
288
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "4a875792-664d-4c97-af72-1252c86cc64a",
"name": "row_number",
"type": "number",
"value": "={{ $json.row_number }}"
},
{
"id": "cd47a508-aad7-4c7c-94cc-15752e8ede05",
"name": "Number",
"type": "number",
"value": "={{ $json.Color.length }}"
},
{
"id": "b67e8c39-f3f9-4614-9b5d-96876cb6a669",
"name": "Status",
"type": "string",
"value": "DONE"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "d0d135bc-84b9-4543-9fa0-981f9be5c40d",
"name": "Read Google Sheets",
"type": "n8n-nodes-base.googleSheets",
"onError": "continueErrorOutput",
"position": [
224,
288
],
"parameters": {
"options": {},
"filtersUI": {
"values": [
{
"lookupValue": "READY",
"lookupColumn": "Status"
}
]
},
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1hKwP2_G6EaVSJlqWH1zYMVjarb9cuBx78D_U3HBrdhQ/edit#gid=0",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1hKwP2_G6EaVSJlqWH1zYMVjarb9cuBx78D_U3HBrdhQ",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1hKwP2_G6EaVSJlqWH1zYMVjarb9cuBx78D_U3HBrdhQ/edit?usp=drivesdk",
"cachedResultName": "Tip #5: Fixing Google Sheets quota exceeding issue"
},
"authentication": "serviceAccount"
},
"credentials": {
"googleApi": {
"name": "<your credential>"
}
},
"typeVersion": 4.6
},
{
"id": "3080f987-e5b4-4690-8750-4e469f55305f",
"name": "Update Google Sheets",
"type": "n8n-nodes-base.googleSheets",
"onError": "continueErrorOutput",
"position": [
880,
288
],
"parameters": {
"columns": {
"value": {},
"schema": [
{
"id": "Color",
"type": "string",
"display": true,
"required": false,
"displayName": "Color",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Status",
"type": "string",
"display": true,
"required": false,
"displayName": "Status",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Number",
"type": "string",
"display": true,
"required": false,
"displayName": "Number",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "row_number",
"type": "number",
"display": true,
"removed": false,
"readOnly": true,
"required": false,
"displayName": "row_number",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "autoMapInputData",
"matchingColumns": [
"row_number"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "update",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1hKwP2_G6EaVSJlqWH1zYMVjarb9cuBx78D_U3HBrdhQ/edit#gid=0",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1hKwP2_G6EaVSJlqWH1zYMVjarb9cuBx78D_U3HBrdhQ",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1hKwP2_G6EaVSJlqWH1zYMVjarb9cuBx78D_U3HBrdhQ/edit?usp=drivesdk",
"cachedResultName": "Tip #5: Fixing Google Sheets quota exceeding issue"
},
"authentication": "serviceAccount"
},
"credentials": {
"googleApi": {
"name": "<your credential>"
}
},
"typeVersion": 4.6
},
{
"id": "044ad4ad-1f57-49c2-ac50-2271a640ac23",
"name": "Wait",
"type": "n8n-nodes-base.wait",
"position": [
880,
528
],
"parameters": {
"unit": "minutes",
"amount": "=1"
},
"typeVersion": 1.1
},
{
"id": "099a89d0-7d05-4e8a-9fdb-a4ab2deda5a0",
"name": "Wait1",
"type": "n8n-nodes-base.wait",
"position": [
224,
528
],
"parameters": {
"unit": "minutes",
"amount": "=1"
},
"typeVersion": 1.1
}
],
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "7d3ce1f7-42c2-4763-9100-7cc633b59022",
"connections": {
"Wait": {
"main": [
[
{
"node": "Update Google Sheets",
"type": "main",
"index": 0
}
]
]
},
"Wait1": {
"main": [
[
{
"node": "Read Google Sheets",
"type": "main",
"index": 0
}
]
]
},
"Edit Fields": {
"main": [
[
{
"node": "Update Google Sheets",
"type": "main",
"index": 0
}
]
]
},
"Loop Over Items": {
"main": [
[],
[
{
"node": "Edit Fields",
"type": "main",
"index": 0
}
]
]
},
"Read Google Sheets": {
"main": [
[
{
"node": "Loop Over Items",
"type": "main",
"index": 0
}
],
[
{
"node": "Wait1",
"type": "main",
"index": 0
}
]
]
},
"Update Google Sheets": {
"main": [
[
{
"node": "Loop Over Items",
"type": "main",
"index": 0
}
],
[
{
"node": "Wait",
"type": "main",
"index": 0
}
]
]
},
"When clicking \u2018Execute workflow\u2019": {
"main": [
[
{
"node": "Read Google Sheets",
"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.
googleApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Preventing Google Sheets Quota Errors during Batch Processing. Uses manualTrigger, stickyNote, splitInBatches, googleSheets. Event-driven trigger; 8 nodes.
Source: https://github.com/vklepikovskiy/n8nplaybook-public/blob/main/workflows/google_sheets_quota_errors.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.
SEO key word analysis and filter. Uses manualTrigger, lmChatOpenAi, googleDrive, extractFromFile. Event-driven trigger; 26 nodes.
Passive Income with Stock Images. Uses googleDrive, openAi, googleSheets. Event-driven trigger; 15 nodes.
Fetch the Most Recent Document from Google Drive. Uses googleDocs, toolWikipedia, toolCalculator, googleSheets. Event-driven trigger; 12 nodes.
Google Sheets UI for n8n Workflow. Uses manualTrigger, stickyNote, splitInBatches, googleSheets. Event-driven trigger; 6 nodes.
Product - Google Search Console API Examples. Uses httpRequest. Event-driven trigger; 36 nodes.