This workflow corresponds to n8n.io template #3578 — we link there as the canonical source.
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 →
{
"nodes": [
{
"id": "e0721f8a-d157-4ec4-91b3-94060a841dc8",
"name": "QuickChart",
"type": "n8n-nodes-base.quickChart",
"position": [
240,
-40
],
"parameters": {
"data": "={{ $json.jsonData.salesData }}",
"chartType": "line",
"labelsMode": "array",
"labelsArray": "={{ $json.jsonData.labels }}",
"chartOptions": {},
"datasetOptions": {}
},
"typeVersion": 1
},
{
"id": "b178ca51-357f-4731-8953-75e2370edc2d",
"name": "Edit Fields: Set JSON data to test",
"type": "n8n-nodes-base.set",
"position": [
-80,
-40
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "1b3ae0ac-7fa5-406c-8e61-d6a9a6c27f07",
"name": "jsonData",
"type": "object",
"value": "={ \"reportTitle\": \"Quarterly Sales\", \"labels\": [\"Q1\", \"Q2\", \"Q3\", \"Q4\"], \"salesData\": [1250, 1800, 1550, 2100] }"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "393665db-f6a6-4294-afd8-3a9f32192c64",
"name": "Google Drive: Upload File",
"type": "n8n-nodes-base.googleDrive",
"position": [
520,
-40
],
"parameters": {
"name": "=chart.{{ $binary.data.fileExtension }}",
"driveId": {
"__rl": true,
"mode": "list",
"value": "My Drive"
},
"options": {},
"folderId": {
"__rl": true,
"mode": "list",
"value": "root",
"cachedResultName": "/ (Root folder)"
}
},
"credentials": {
"googleDriveOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 3
},
{
"id": "c4f2df73-50dc-4b9f-bcb8-43644c0cbed9",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-600,
-740
],
"parameters": {
"width": 1460,
"height": 1060,
"content": "## Chart Generator\n**Generate Dynamic Line Chart from JSON Data to Upload to Google Drive\n### How to Use & Customize\n\n* **Change Input Data:** Modify the `labels` and `salesData` arrays within the `Edit Fields: Set JSON data to test` node to use your own data. Ensure the number of labels matches the number of data points.\n* **Use Real Data Sources:** Replace the `Edit Fields: Set JSON data to test` node with nodes that fetch data from real sources like:\n * HTTP Request (APIs)\n * Postgres / MongoDB nodes (Databases)\n * Google Sheets node\n * Ensure the output data from your source node is formatted similarly (providing `labels` and `salesData` arrays). You might need another Set node to structure the data correctly before the QuickChart node.\n* **Change Chart Type:** In the QuickChart node, modify the `Chart Type` parameter (e.g., change from `line` to `bar`, `pie`, `doughnut`, etc.).\n* **Customize Chart Appearance:** Explore the `Chart Options` parameter within the QuickChart node to add titles, change colors, modify axes, etc., using QuickChart's standard JSON configuration options.\n* **Use Datasets (Recommended for Complex Charts):** For multiple lines/bars or more control, configure datasets explicitly in the QuickChart node:\n * Remove the expression from the top-level `Data` field.\n * Go to `Dataset Options` -> `Add option` -> `Add dataset`.\n * Set the `Data` field within the dataset using an expression like `{{ $json.jsonData.salesData }}`.\n * You can add multiple datasets this way.\n* **Change Output Destination:** Replace the `Google Drive: Upload File` node with other nodes to handle the chart image differently:\n * `Write Binary File`: Save the chart to the local filesystem where n8n is running.\n * `Slack` / `Discord` / `Telegram`: Send the chart to messaging platforms.\n * `Move Binary Data`: Convert the image to Base64 to embed in HTML or return via webhook response."
},
"typeVersion": 1
},
{
"id": "1af3cfc6-f690-4af2-a812-4a4da118a55c",
"name": "When clicking \u2018Test workflow\u2019",
"type": "n8n-nodes-base.manualTrigger",
"position": [
-400,
-40
],
"parameters": {},
"typeVersion": 1
}
],
"connections": {
"QuickChart": {
"main": [
[
{
"node": "Google Drive: Upload File",
"type": "main",
"index": 0
}
]
]
},
"When clicking \u2018Test workflow\u2019": {
"main": [
[
{
"node": "Edit Fields: Set JSON data to test",
"type": "main",
"index": 0
}
]
]
},
"Edit Fields: Set JSON data to test": {
"main": [
[
{
"node": "QuickChart",
"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.
googleDriveOAuth2Api
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
This workflow demonstrates how to dynamically generate a line chart using the QuickChart node based on data provided in a JSON object and then upload the resulting chart image to Google Drive. You can use it in presentations or requesting for chart generation from a software…
Source: https://n8n.io/workflows/3578/ — 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.
Back up n8n workflows to Google Drive automatically This workflow provides a robust solution for backing up your n8n workflows to Google Drive. It is designed to handle backups for multiple n8n instan
Description:
Batch watermark every image in a Google Drive folder and save the results to a separate destination folder — fully automated, no code required, and no external tools or APIs needed.
This workflow is perfect for technical writers, content creators, marketers, and developers who write in Markdown but need to collaborate or publish using Google Docs format. Ideal for teams that want
Export Markdown Content do Google Docs Document. Uses googleDrive. Event-driven trigger; 11 nodes.