This workflow corresponds to n8n.io template #4224 — we link there as the canonical source.
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 →
{
"id": "T1fYjI4iHqkXtK9V",
"name": "Get OVH Invoices to Google Sheets",
"tags": [],
"nodes": [
{
"id": "ed55d7b6-cb40-4323-9709-cc0468022a8f",
"name": "When clicking \u2018Test workflow\u2019",
"type": "n8n-nodes-base.manualTrigger",
"position": [
-2660,
-220
],
"parameters": {},
"typeVersion": 1
},
{
"id": "3eb0433d-e5ca-4d17-aaa5-1cec76705293",
"name": "Loop Over Items",
"type": "n8n-nodes-base.splitInBatches",
"position": [
-1780,
-220
],
"parameters": {
"options": {}
},
"typeVersion": 3
},
{
"id": "0a298df5-083f-4610-b8d8-3f70e28cf04a",
"name": "Split Out",
"type": "n8n-nodes-base.splitOut",
"position": [
-2000,
-220
],
"parameters": {
"options": {},
"fieldToSplitOut": "invoices"
},
"typeVersion": 1
},
{
"id": "6e05dc9a-f47b-4847-84ab-c9acc990d05d",
"name": "Get Invoice Data",
"type": "n8n-nodes-base.httpRequest",
"position": [
-1540,
-200
],
"parameters": {
"url": "=https://eu.api.ovh.com/v1/me/bill/{{ $json.invoices }}",
"options": {},
"sendHeaders": true,
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth",
"headerParameters": {
"parameters": [
{
"name": "accept",
"value": "application/json"
}
]
}
},
"credentials": {
"httpHeaderAuth": {
"name": "<your credential>"
}
},
"executeOnce": true,
"typeVersion": 4.2
},
{
"id": "48e324e4-72d9-4b24-a739-f1561edd3498",
"name": "Safe File",
"type": "n8n-nodes-base.googleDrive",
"position": [
-1580,
280
],
"parameters": {
"name": "={{ $('Download PDF').item.binary.data.fileName }}",
"driveId": {
"__rl": true,
"mode": "list",
"value": "My Drive"
},
"options": {},
"folderId": {
"__rl": true,
"mode": "id",
"value": "={{ $json.id }}"
}
},
"credentials": {
"googleDriveOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 3,
"alwaysOutputData": true
},
{
"id": "90903b2f-d8e9-49b4-bc26-48807bd5d41e",
"name": "Create Folder",
"type": "n8n-nodes-base.googleDrive",
"position": [
-2020,
180
],
"parameters": {
"name": "={{ $('Record in OVH Sheet').item.json.FY }}",
"driveId": {
"__rl": true,
"mode": "list",
"value": "My Drive"
},
"options": {
"folderColorRgb": "#0B54E4",
"simplifyOutput": true
},
"folderId": {
"__rl": true,
"mode": "id",
"value": "[Put here Your main Invoice Folder]"
},
"resource": "folder"
},
"credentials": {
"googleDriveOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 3,
"alwaysOutputData": true
},
{
"id": "1a155b9f-bdbb-4001-b07d-61ee2d2ce74c",
"name": "Download PDF",
"type": "n8n-nodes-base.httpRequest",
"position": [
-1800,
280
],
"parameters": {
"url": "={{ $('Get Invoice Data').item.json.pdfUrl }}",
"options": {}
},
"typeVersion": 4.2
},
{
"id": "c10b006a-ebd7-444b-a90a-d53f5efaf14e",
"name": "Record in OVH Sheet",
"type": "n8n-nodes-base.googleSheets",
"notes": "Amend the expression for 'date' to reflect Your locale\n{{DateTime.fromISO($json.date, { locale: 'de' }).toFormat('dd.MM.yyyy')}}",
"position": [
-1320,
-200
],
"parameters": {
"columns": {
"value": {
"FY": "={{ $json.date.toDateTime().format('y') }}",
"tax": "={{ $json.tax.text }}",
"url": "={{ $json.url }}",
"date": "={{DateTime.fromISO($json.date, { locale: 'de' }).toFormat('dd.MM.yyyy')}}",
"billId": "={{ $json.billId }}",
"pdfUrl": "={{ $json.pdfUrl }}",
"Invoice": "={{ $('Loop Over Items').item.json.invoices }}",
"orderId": "={{ $json.orderId }}",
"category": "={{ $json.category }}",
"password": "={{ $json.password }}",
"tax_value": "={{ $json.tax.value }}",
"priceWithTax": "={{ $json.priceWithTax.text }}",
"priceWithoutTax": "={{ $json.priceWithoutTax.text }}",
"tax_currencyCode": "={{ $json.tax.currencyCode }}",
"priceWithTax_value": "={{ $json.priceWithTax.value }}",
"priceWithoutTax_value": "={{ $json.priceWithoutTax.value }}",
"priceWithTax_currencyCode": "={{ $json.priceWithTax.currencyCode }}",
"priceWithoutTax_currencyCode": "={{ $json.priceWithoutTax.currencyCode }}"
},
"schema": [
{
"id": "Invoice",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Invoice",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "FY",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "FY",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "date",
"type": "string",
"display": true,
"required": false,
"displayName": "date",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "tax",
"type": "string",
"display": true,
"required": false,
"displayName": "tax",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "tax_value",
"type": "string",
"display": true,
"required": false,
"displayName": "tax_value",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "tax_currencyCode",
"type": "string",
"display": true,
"required": false,
"displayName": "tax_currencyCode",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "pdfUrl",
"type": "string",
"display": true,
"required": false,
"displayName": "pdfUrl",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "priceWithTax",
"type": "string",
"display": true,
"required": false,
"displayName": "priceWithTax",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "priceWithTax_value",
"type": "string",
"display": true,
"required": false,
"displayName": "priceWithTax_value",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "priceWithTax_currencyCode",
"type": "string",
"display": true,
"required": false,
"displayName": "priceWithTax_currencyCode",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "orderId",
"type": "string",
"display": true,
"required": false,
"displayName": "orderId",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "url",
"type": "string",
"display": true,
"required": false,
"displayName": "url",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "billId",
"type": "string",
"display": true,
"required": false,
"displayName": "billId",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "category",
"type": "string",
"display": true,
"required": false,
"displayName": "category",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "priceWithoutTax",
"type": "string",
"display": true,
"required": false,
"displayName": "priceWithoutTax",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "priceWithoutTax_value",
"type": "string",
"display": true,
"required": false,
"displayName": "priceWithoutTax_value",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "priceWithoutTax_currencyCode",
"type": "string",
"display": true,
"required": false,
"displayName": "priceWithoutTax_currencyCode",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "password",
"type": "string",
"display": true,
"required": false,
"displayName": "password",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Filename",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Filename",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "GDrive_ID",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "GDrive_ID",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"Invoice"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {
"cellFormat": "USER_ENTERED"
},
"operation": "appendOrUpdate",
"sheetName": {
"__rl": true,
"mode": "list",
"value": 1935476633,
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1NDQVUayKCUktwhDfgdyueW15JPeQZl_oExO_4O5GV-I/edit#gid=1935476633",
"cachedResultName": "OVH"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1NDQVUayKCUktwhDfgdyueW15JPeQZl_oExO_4O5GV-I",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1NDQVUayKCUktwhDfgdyueW15JPeQZl_oExO_4O5GV-I/edit?usp=drivesdk",
"cachedResultName": "OVH Invoices (file -> make a copy)"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"executeOnce": true,
"notesInFlow": true,
"typeVersion": 4.5
},
{
"id": "f2683a37-81fd-4410-9158-3c2f5b7aa1af",
"name": "Sticky Note8",
"type": "n8n-nodes-base.stickyNote",
"position": [
-3260,
-380
],
"parameters": {
"width": 740,
"height": 720,
"content": "# \ud83d\udee0\ufe0fSetup Guide 'Get OVH Invoices to Google Sheets'\n**Author: [Oliver Bardenheier](https://www.linkedin.com/in/oliver-bardenheier)**\n\n1. **Make a copy** of this [Google Sheet Template](https://docs.google.com/spreadsheets/d/1NDQVUayKCUktwhDfgdyueW15JPeQZl_oExO_4O5GV-I/edit?usp=sharing) \n\n2. Set the timeframe for the query to Your likings in *\"Query Latest OVH Invoices\"*\nYou could set an email trigger before and make the frame only one day.\n\n3. Log into Your OVH Account and get Your Credentials [here](https://eu.api.ovh.com/console/?section=%2Fiam&branch=v2#auth)\n\nAuthentication using oAuth2 Authorization Code\n\"Login with OVHcloud SSO\"\n\nYou need to Authorize OVHcloud API console\n\nIf this worked fine You'll see a green text: \n\"Access Token Received\"\n\n4. Head over to the [OVH API Console](https://eu.api.ovh.com/console/?section=%2Fme&branch=v1#get-/me) to get Your Token.\n\n5. Set Up *Header Auth* in the HTTP nodes: \n- Authentication = Generic Credential Type\n- Generic Auth Type = Header Auth\n- Header Auth = Your OVH Header Credentials:\n -- a.) In every API Call in the console You'll find a curl example, just take the data from the line including: \n -H \"authorization: Bearer YOUR_TOKEN_HERE\"\n\n -- b.) Create a new Credential in n8n for the header auth. \n Put in the 'name' Field: authorization\n Copy Your Token including Bearer YOUR_TOKEN_HERE the value field: 'Bearer YOUR_TOKEN_HERE'\n\n"
},
"typeVersion": 1
},
{
"id": "3d7bc6f9-d359-43b8-963e-5186685d0a14",
"name": "Query Latest OVH Invoices",
"type": "n8n-nodes-base.httpRequest",
"position": [
-2440,
-220
],
"parameters": {
"url": "https://eu.api.ovh.com/v1/me/bill",
"options": {},
"sendQuery": true,
"sendHeaders": true,
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth",
"queryParameters": {
"parameters": [
{
"name": "date.to",
"value": "={{ $now }}"
},
{
"name": "date.from",
"value": "={{ $now.minus(3, 'months') }}"
}
]
},
"headerParameters": {
"parameters": [
{
"name": "accept",
"value": "application/json"
}
]
}
},
"credentials": {
"httpHeaderAuth": {
"name": "<your credential>"
}
},
"executeOnce": true,
"typeVersion": 4.2
},
{
"id": "7abe76bc-8552-4f79-8396-382a4dd6ea72",
"name": "Convert to Array",
"type": "n8n-nodes-base.code",
"position": [
-2220,
-220
],
"parameters": {
"jsCode": "return [{ json: { invoices: items.map(i => i.json) } }];\n"
},
"typeVersion": 2
},
{
"id": "ce0fd793-285f-4c74-bead-dc195bd425c4",
"name": "Check for FY Folder ID",
"type": "n8n-nodes-base.googleDrive",
"position": [
-2460,
260
],
"parameters": {
"filter": {
"folderId": {
"__rl": true,
"mode": "id",
"value": "[Put here Your main Invoice Folder]"
},
"whatToSearch": "folders"
},
"options": {
"fields": [
"id",
"name"
]
},
"resource": "fileFolder",
"queryString": "={{DateTime.fromISO($('Get Invoice Data').item.json.date, { locale: 'de' }).toFormat('y')}}"
},
"credentials": {
"googleDriveOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 3,
"alwaysOutputData": true
},
{
"id": "bd2b8556-675e-4183-9ba7-336eb71f643b",
"name": "Does Folder exist",
"type": "n8n-nodes-base.if",
"position": [
-2240,
260
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "f6851a49-8ee0-45c1-8d1a-76de36136374",
"operator": {
"type": "object",
"operation": "empty",
"singleValue": true
},
"leftValue": "={{ $('Check for FY Folder ID').item.json }}",
"rightValue": ""
}
]
}
},
"typeVersion": 2.2
},
{
"id": "79dc558d-3ccb-4a41-9349-33b6f6e9c8db",
"name": "Update Record Data with FileID",
"type": "n8n-nodes-base.googleSheets",
"position": [
-1360,
280
],
"parameters": {
"columns": {
"value": {
"Invoice": "={{ $('Loop Over Items').item.json.invoices }}",
"Filename": "={{ $('Safe File').item.json.name }}",
"GDrive_ID": "={{ $('Safe File').item.json.id }}"
},
"schema": [
{
"id": "Invoice",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Invoice",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "FY",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "FY",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "date",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "date",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "tax",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "tax",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "tax_value",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "tax_value",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "tax_currencyCode",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "tax_currencyCode",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "pdfUrl",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "pdfUrl",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "priceWithTax",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "priceWithTax",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "priceWithTax_value",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "priceWithTax_value",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "priceWithTax_currencyCode",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "priceWithTax_currencyCode",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "orderId",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "orderId",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "url",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "url",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "billId",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "billId",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "category",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "category",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "priceWithoutTax",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "priceWithoutTax",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "priceWithoutTax_value",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "priceWithoutTax_value",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "priceWithoutTax_currencyCode",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "priceWithoutTax_currencyCode",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "password",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "password",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Filename",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Filename",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "GDrive_ID",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "GDrive_ID",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"Invoice"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {
"cellFormat": "USER_ENTERED"
},
"operation": "appendOrUpdate",
"sheetName": {
"__rl": true,
"mode": "list",
"value": 1935476633,
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1NDQVUayKCUktwhDfgdyueW15JPeQZl_oExO_4O5GV-I/edit#gid=1935476633",
"cachedResultName": "OVH"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1NDQVUayKCUktwhDfgdyueW15JPeQZl_oExO_4O5GV-I",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1NDQVUayKCUktwhDfgdyueW15JPeQZl_oExO_4O5GV-I/edit?usp=drivesdk",
"cachedResultName": "OVH Invoices (file -> make a copy)"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.5
},
{
"id": "5496b950-8218-4ccb-8923-b234a54f70fd",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-2500,
-380
],
"parameters": {
"color": 5,
"width": 620,
"height": 440,
"content": "## Query OVH Invoices\nSet the timeframe for the query to Your likings in *\"Query Latest OVH Invoices\"*\nYou could set an email trigger before and make the frame only one day.\nFind Query String Parameters and curl [here](https://eu.api.ovh.com/console/?section=%2Fme&branch=v1#get-/me/bill)"
},
"typeVersion": 1
},
{
"id": "fb298013-68cf-4235-8e68-108d47bfceac",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1860,
-380
],
"parameters": {
"color": 4,
"width": 700,
"height": 440,
"content": "## Query Invoice Details and put to Google Sheet\nFind Query String Parameters and curl [here](https://eu.api.ovh.com/console/?section=%2Fme&branch=v1#get-/me/bill/-billId-)\nAmend the expression for 'date' to reflect Your locale\n{{DateTime.fromISO($json.date, { locale: 'de' }).toFormat('dd.MM.yyyy')}}\n"
},
"typeVersion": 1
},
{
"id": "f55e9d6b-2551-4a08-8184-9949b3ecbe4b",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-2500,
80
],
"parameters": {
"color": 6,
"width": 1340,
"height": 440,
"content": "## Download Invoice PDF and save to Google Drive in Yearly Folder"
},
"typeVersion": 1
}
],
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "c0e0e7cd-c173-42c4-a272-7d3e2db423cc",
"connections": {
"Safe File": {
"main": [
[
{
"node": "Update Record Data with FileID",
"type": "main",
"index": 0
}
]
]
},
"Split Out": {
"main": [
[
{
"node": "Loop Over Items",
"type": "main",
"index": 0
}
]
]
},
"Download PDF": {
"main": [
[
{
"node": "Safe File",
"type": "main",
"index": 0
}
]
]
},
"Create Folder": {
"main": [
[
{
"node": "Download PDF",
"type": "main",
"index": 0
}
]
]
},
"Loop Over Items": {
"main": [
[],
[
{
"node": "Get Invoice Data",
"type": "main",
"index": 0
}
]
]
},
"Convert to Array": {
"main": [
[
{
"node": "Split Out",
"type": "main",
"index": 0
}
]
]
},
"Get Invoice Data": {
"main": [
[
{
"node": "Record in OVH Sheet",
"type": "main",
"index": 0
}
]
]
},
"Does Folder exist": {
"main": [
[
{
"node": "Create Folder",
"type": "main",
"index": 0
}
],
[
{
"node": "Download PDF",
"type": "main",
"index": 0
}
]
]
},
"Record in OVH Sheet": {
"main": [
[
{
"node": "Check for FY Folder ID",
"type": "main",
"index": 0
}
]
]
},
"Check for FY Folder ID": {
"main": [
[
{
"node": "Does Folder exist",
"type": "main",
"index": 0
}
]
]
},
"Query Latest OVH Invoices": {
"main": [
[
{
"node": "Convert to Array",
"type": "main",
"index": 0
}
]
]
},
"Update Record Data with FileID": {
"main": [
[
{
"node": "Loop Over Items",
"type": "main",
"index": 0
}
]
]
},
"When clicking \u2018Test workflow\u2019": {
"main": [
[
{
"node": "Query Latest OVH Invoices",
"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.
googleDriveOAuth2ApigoogleSheetsOAuth2ApihttpHeaderAuth
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Author: Oliver Bardenheier
Source: https://n8n.io/workflows/4224/ — 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 acts as a junior finance research analyst for a UK boutique M&A or corporate finance team. It listens for Slack messages, classifies the request, gathers company or market data, and prod
This workflow automates the generation of AI-enhanced, contextualized images using FLUX Kontext, based on prompts stored in a Google Sheet. The generated images are then saved to Google Drive, and the
This workflow is perfect for productivity-focused teams, remote workers, virtual assistants, and digital knowledge managers who receive documents, images, or notes through Telegram and want to automat
This n8n workflow automates the transformation of spreadsheet data into professional charts and graphs using AI-driven analysis. Triggered via Slack, it processes uploaded files (Excel, CSV, Google Sh
This workflow syncs Toggl Track time entries to Google Sheets and creates monthly tabs automatically.