n8n-workflows/workflows/1941_workflow_1941.json
2025-05-14 11:58:29 +03:00

118 lines
4.9 KiB
JSON

{
"meta": {
"instanceId": "a2434c94d549548a685cca39cc4614698e94f527bcea84eefa363f1037ae14cd"
},
"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": {
"id": "35",
"name": "TEST USER"
}
},
"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
}
]
]
}
}
}