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": "b3a0fa7c-eb47-4f51-98d7-ac1a8de7b05d",
"name": "On new or updated row",
"type": "n8n-nodes-base.googleSheetsTrigger",
"position": [
800,
380
],
"parameters": {
"options": {
"columnsToWatch": [
"Security Code"
]
},
"pollTimes": {
"item": [
{
"mode": "everyMinute"
}
]
},
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1Np8TQv7kWwwrGiPkWWsmr4WYWAosv1BMBwwCd0f-dis/edit#gid=0",
"cachedResultName": "Investments"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1Np8TQv7kWwwrGiPkWWsmr4WYWAosv1BMBwwCd0f-dis",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1Np8TQv7kWwwrGiPkWWsmr4WYWAosv1BMBwwCd0f-dis/edit?usp=drivesdk",
"cachedResultName": "Investments"
}
},
"credentials": {
"googleSheetsTriggerOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "61b96d9b-801c-43e6-b89a-a55245386e4f",
"name": "Send message",
"type": "n8n-nodes-base.discord",
"position": [
1200,
380
],
"parameters": {
"text": "=```\n{{ $json.ascii_table }}\n```",
"options": {},
"webhookUri": "https://discord.com/api/webhooks/..."
},
"typeVersion": 1
},
{
"id": "2dc9ce88-2079-4419-9f48-2281ac25cb36",
"name": "Convert to ASCII table",
"type": "n8n-nodes-base.code",
"position": [
1000,
380
],
"parameters": {
"jsCode": "/* configure columns to be displayed */\nconst columns_to_display = [\n \"Security Code\",\n \"Price\",\n \"Quantity\",\n]\n\n/* End of configuration section (do not edit code below) */\nconst google_sheets_data = $('On new or updated row').all();\n\n/**\n * Takes a list of objects and returns an ascii table with\n * padding and headers.\n */\nfunction ascii_table(data, columns_to_display) {\n let table = \"\"\n \n // Get the headers\n let headers = []\n for (let i = 0; i < columns_to_display.length; i++) {\n headers.push(columns_to_display[i])\n }\n\n // Get the longest string in each column\n let longest_strings = []\n for (let i = 0; i < headers.length; i++) {\n let longest_string = headers[i].length\n for (let j = 0; j < data.length; j++) {\n let string_length = data[j].json[headers[i]].length\n if (string_length > longest_string) {\n longest_string = string_length\n }\n }\n longest_strings.push(longest_string)\n }\n\n // Add the headers to the table\n for (let i = 0; i < headers.length; i++) {\n table += headers[i].toString().padEnd(longest_strings[i] + 2, \" \")\n }\n\n // Add the data to the table\n for (let i = 0; i < data.length; i++) {\n table += \"\\n\"\n for (let j = 0; j < headers.length; j++) {\n table += data[i].json[headers[j]].toString().padEnd(longest_strings[j] + 2, \" \")\n }\n }\n\n return table\n}\n\noutput = {\n ascii_table: ascii_table(google_sheets_data, columns_to_display),\n}\n\nconsole.log(output.ascii_table)\n\nreturn output"
},
"typeVersion": 1
},
{
"id": "2db7b37b-22f9-424d-a889-33f8a0db2b01",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
340,
220
],
"parameters": {
"width": 402,
"height": 433,
"content": "## Send Google Sheets data as a message to a Discord channel\nThis workflow sends a message to a Discord channel when a new row is added or a row is updated in a Google Sheet. The message will send all data rows in the Google Sheet.\n\n### How it works\nUsing a code node, we can use the obtained Google Sheet data to create a custom message that will be sent to Discord. The message will be sent to the Discord channel specified in the Discord node.\n\n### Setup\nThis workflow requires that you set up a Discord webhook and have an existing Google Sheet with data. See how to set up a Discord webhook [here](https://docs.n8n.io/integrations/builtin/credentials/discord/#creating-a-webhook-in-discord).\n"
},
"typeVersion": 1
}
],
"connections": {
"On new or updated row": {
"main": [
[
{
"node": "Convert to ASCII table",
"type": "main",
"index": 0
}
]
]
},
"Convert to ASCII table": {
"main": [
[
{
"node": "Send message",
"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.
googleSheetsTriggerOAuth2Api
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Googlesheets Discord. Uses googleSheetsTrigger, discord, stickyNote. Event-driven trigger; 4 nodes.
Source: https://github.com/Zie619/n8n-workflows — 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.
A comprehensive n8n automation that monitors Google Sheets for new project entries, automatically creates dedicated Discord channels, and sends formatted member notifications with all essential projec
This workflow sends a message to a Discord channel when a new row is added or a row is updated in a Google Sheet. The message will send all data rows in the Google Sheet. Discord account and Discord c
Unlock low-cost, high-control generative media workflows directly from n8n by integrating with ComfyUI. Ideal for indie creators, AI developers, or small teams seeking scalable media automation—from i
Execute_Command. Uses executeWorkflowTrigger, postgres, discord, httpRequest. Event-driven trigger; 47 nodes.
This workflow will backup all of your existed workflows to a single Github repository.