This workflow follows the Google Sheets → HTTP Request 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 →
{
"name": "Nexus_v6(\u0e25\u0e48\u0e32\u0e2a\u0e38\u0e14\u0e08\u0e23\u0e34\u0e07\u0e46)\u0e25\u0e48\u0e32\u0e2a\u0e38\u0e14\u0e44\u0e01\u0e44\u0e01",
"nodes": [
{
"parameters": {
"httpMethod": "POST",
"path": "nexusopza",
"options": {}
},
"type": "n8n-nodes-base.webhook",
"typeVersion": 2.1,
"position": [
-5760,
14336
],
"id": "a5b0d02f-76b2-4989-b29b-76217445c6f4",
"name": "Webhook1"
},
{
"parameters": {
"operation": "append",
"documentId": {
"__rl": true,
"value": "1lBLT-m-s8j8RI-BVPFd2rffP9ftf0tQG3t9yrHmPgSU",
"mode": "list",
"cachedResultName": "Copy of NewCSI403",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1lBLT-m-s8j8RI-BVPFd2rffP9ftf0tQG3t9yrHmPgSU/edit?usp=drivesdk"
},
"sheetName": {
"__rl": true,
"value": 615510512,
"mode": "list",
"cachedResultName": "tasks",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1lBLT-m-s8j8RI-BVPFd2rffP9ftf0tQG3t9yrHmPgSU/edit#gid=615510512"
},
"columns": {
"mappingMode": "defineBelow",
"value": {
"task_id": "={{'TASK-' + $now.toMillis()}}",
"user_id": "={{$json.user_id}}",
"task_name": "={{$json.task_name}}",
"subject": "={{$json.subject}}",
"task_type": "={{$json.task_type}}",
"notified_1h": "false",
"status": "pending",
"created_at": "={{$json.created_at}}",
"deadline_time": "={{$json.deadline_time}}",
"notified_15m": "false",
"has_time": "={{$json.has_time}}",
"deadline_date": "={{$json.deadline_date}}"
},
"matchingColumns": [],
"schema": [
{
"id": "task_id",
"displayName": "task_id",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true
},
{
"id": "user_id",
"displayName": "user_id",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true
},
{
"id": "task_name",
"displayName": "task_name",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true
},
{
"id": "subject",
"displayName": "subject",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true
},
{
"id": "task_type",
"displayName": "task_type",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true
},
{
"id": "deadline_date",
"displayName": "deadline_date",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true,
"removed": false
},
{
"id": "deadline_time",
"displayName": "deadline_time",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true,
"removed": false
},
{
"id": "status",
"displayName": "status",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true
},
{
"id": "notified_1h",
"displayName": "notified_1h",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true
},
{
"id": "notified_15m",
"displayName": "notified_15m",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true,
"removed": false
},
{
"id": "has_time",
"displayName": "has_time",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true,
"removed": false
},
{
"id": "created_at",
"displayName": "created_at",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true
}
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {}
},
"type": "n8n-nodes-base.googleSheets",
"typeVersion": 4.7,
"position": [
-3520,
13488
],
"id": "827ed74e-cd41-4fa0-9c9a-76b98b391ced",
"name": "GSheet Add Task1",
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "5995b4c7-6035-4289-b3d3-38e15584a8f1",
"name": "text",
"value": "={{$json[\"body\"][\"events\"][0][\"message\"][\"text\"]}}",
"type": "string"
},
{
"id": "6de254a9-64e5-4721-b499-8f44410ef579",
"name": "replyToken",
"value": "={{$json[\"body\"][\"events\"][0][\"replyToken\"]}}",
"type": "string"
},
{
"id": "772b3b91-2dea-4f44-8f52-a24da2f2c1d2",
"name": "userId",
"value": "={{$json[\"body\"][\"events\"][0][\"source\"][\"userId\"]}}",
"type": "string"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
-5536,
14336
],
"id": "29413884-e766-4261-a5f1-bb81df70b389",
"name": "Edit Fields1"
},
{
"parameters": {
"rules": {
"values": [
{
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict",
"version": 3
},
"conditions": [
{
"leftValue": "={{$json.intent}}",
"rightValue": "add_task",
"operator": {
"type": "string",
"operation": "equals"
},
"id": "slot-incomplete"
},
{
"leftValue": "={{$json.process_status}}",
"rightValue": "incomplete",
"operator": {
"type": "string",
"operation": "equals"
},
"id": "slot-incomplete-2"
}
],
"combinator": "and"
}
},
{
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict",
"version": 3
},
"conditions": [
{
"leftValue": "={{$json.intent}}",
"rightValue": "add_task",
"operator": {
"type": "string",
"operation": "equals"
},
"id": "c5e1a2a3-8887-4393-a959-ad734023e879"
},
{
"leftValue": "={{$json.process_status}}",
"rightValue": "complete",
"operator": {
"type": "string",
"operation": "equals"
},
"id": "c5e1a2a3-complete"
}
],
"combinator": "and"
}
},
{
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict",
"version": 3
},
"conditions": [
{
"id": "40e64871-0569-4663-a152-3b75a458446f",
"leftValue": "={{$json.intent}}",
"rightValue": "complete_task",
"operator": {
"type": "string",
"operation": "equals",
"name": "filter.operator.equals"
}
}
],
"combinator": "and"
}
},
{
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict",
"version": 3
},
"conditions": [
{
"id": "129bc85e-4892-48e2-bc3d-fe1070c03a3b",
"leftValue": "={{$json.intent}}",
"rightValue": "view_tasks",
"operator": {
"type": "string",
"operation": "equals",
"name": "filter.operator.equals"
}
}
],
"combinator": "and"
}
},
{
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict",
"version": 3
},
"conditions": [
{
"id": "delete-task-rule",
"leftValue": "={{$json.intent}}",
"rightValue": "delete_task",
"operator": {
"type": "string",
"operation": "equals"
}
}
],
"combinator": "and"
}
},
{
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict",
"version": 3
},
"conditions": [
{
"id": "edit-task-rule",
"leftValue": "={{$json.intent}}",
"rightValue": "edit_task",
"operator": {
"type": "string",
"operation": "equals"
}
}
],
"combinator": "and"
}
}
]
},
"options": {
"fallbackOutput": "extra"
}
},
"type": "n8n-nodes-base.switch",
"typeVersion": 3.4,
"position": [
-4416,
14256
],
"id": "454da398-d3df-40e4-a17f-fb5e5b8d4c70",
"name": "Switch Intent"
},
{
"parameters": {
"documentId": {
"__rl": true,
"value": "1lBLT-m-s8j8RI-BVPFd2rffP9ftf0tQG3t9yrHmPgSU",
"mode": "list",
"cachedResultName": "Copy of NewCSI403",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1lBLT-m-s8j8RI-BVPFd2rffP9ftf0tQG3t9yrHmPgSU/edit?usp=drivesdk"
},
"sheetName": {
"__rl": true,
"value": 615510512,
"mode": "list",
"cachedResultName": "tasks",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1lBLT-m-s8j8RI-BVPFd2rffP9ftf0tQG3t9yrHmPgSU/edit#gid=615510512"
},
"filtersUI": {
"values": [
{
"lookupColumn": "user_id",
"lookupValue": "={{$json.user_id}}"
},
{
"lookupColumn": "status",
"lookupValue": "pending"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.googleSheets",
"typeVersion": 4.7,
"position": [
-3744,
13856
],
"id": "a8b14156-6080-43e7-b46f-87092fdd2ca4",
"name": "GSheet Find Task to Complete",
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"jsCode": "const found = $input.all();\nconst original = $('Code Parse').first().json;\n\nconst normalize = (s) =>\n String(s || '')\n .trim()\n .toLowerCase()\n .replace(/\\s+/g, '');\n\nconst wanted = normalize(original.task_name);\n\nlet matched = found.find(item =>\n normalize(item.json.task_name) === wanted\n);\n\nif (!matched) {\n matched = found.find(item =>\n normalize(item.json.task_name).includes(wanted) ||\n wanted.includes(normalize(item.json.task_name))\n );\n}\n\nif (!matched || matched.json.row_number == null) {\n return [{\n json: {\n user_id: original.user_id,\n replyToken: original.replyToken,\n reply_message: `\u274c \u0e44\u0e21\u0e48\u0e1e\u0e1a\u0e07\u0e32\u0e19 \"${original.task_name}\" \u0e43\u0e19\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e07\u0e32\u0e19\u0e04\u0e49\u0e32\u0e07`,\n row_number: null,\n skip_update: true\n }\n }];\n}\n\nreturn [{\n json: {\n user_id: original.user_id,\n replyToken: original.replyToken,\n task_name: matched.json.task_name,\n reply_message: `\u2705 \u0e2d\u0e31\u0e1b\u0e40\u0e14\u0e15\u0e2a\u0e16\u0e32\u0e19\u0e30\u0e07\u0e32\u0e19 \"${matched.json.task_name}\" \u0e40\u0e1b\u0e47\u0e19 done \u0e41\u0e25\u0e49\u0e27\u0e04\u0e23\u0e31\u0e1a!`,\n row_number: matched.json.row_number,\n skip_update: false\n }\n}];"
},
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
-3520,
13856
],
"id": "eeb7b973-52c5-4d93-80f6-ed96fe93dce4",
"name": "Code Prep Complete"
},
{
"parameters": {
"operation": "update",
"documentId": {
"__rl": true,
"value": "1lBLT-m-s8j8RI-BVPFd2rffP9ftf0tQG3t9yrHmPgSU",
"mode": "list",
"cachedResultName": "Copy of NewCSI403",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1lBLT-m-s8j8RI-BVPFd2rffP9ftf0tQG3t9yrHmPgSU/edit?usp=drivesdk"
},
"sheetName": {
"__rl": true,
"value": 615510512,
"mode": "list",
"cachedResultName": "tasks",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1lBLT-m-s8j8RI-BVPFd2rffP9ftf0tQG3t9yrHmPgSU/edit#gid=615510512"
},
"columns": {
"mappingMode": "defineBelow",
"value": {
"row_number": "={{$json.row_number}}",
"status": "done"
},
"matchingColumns": [
"row_number"
],
"schema": [
{
"id": "task_id",
"displayName": "task_id",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true,
"removed": true
},
{
"id": "user_id",
"displayName": "user_id",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true,
"removed": true
},
{
"id": "task_name",
"displayName": "task_name",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true,
"removed": true
},
{
"id": "subject",
"displayName": "subject",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true,
"removed": true
},
{
"id": "task_type",
"displayName": "task_type",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true,
"removed": true
},
{
"id": "deadline_date",
"displayName": "deadline_date",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true,
"removed": true
},
{
"id": "deadline_time",
"displayName": "deadline_time",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true,
"removed": true
},
{
"id": "status",
"displayName": "status",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true
},
{
"id": "notified_1h",
"displayName": "notified_1h",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true,
"removed": true
},
{
"id": "notified_15m",
"displayName": "notified_15m",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true,
"removed": true
},
{
"id": "has_time",
"displayName": "has_time",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true,
"removed": true
},
{
"id": "created_at",
"displayName": "created_at",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true,
"removed": true
},
{
"id": "row_number",
"displayName": "row_number",
"required": false,
"defaultMatch": false,
"display": true,
"type": "number",
"canBeUsedToMatch": true,
"readOnly": true
}
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {}
},
"type": "n8n-nodes-base.googleSheets",
"typeVersion": 4.7,
"position": [
-3024,
13840
],
"id": "b806b612-617d-4446-b369-72f0ebcb4447",
"name": "GSheet Update Status Done",
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"documentId": {
"__rl": true,
"value": "1lBLT-m-s8j8RI-BVPFd2rffP9ftf0tQG3t9yrHmPgSU",
"mode": "list",
"cachedResultName": "Copy of NewCSI403",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1lBLT-m-s8j8RI-BVPFd2rffP9ftf0tQG3t9yrHmPgSU/edit?usp=drivesdk"
},
"sheetName": {
"__rl": true,
"value": 615510512,
"mode": "list",
"cachedResultName": "tasks",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1lBLT-m-s8j8RI-BVPFd2rffP9ftf0tQG3t9yrHmPgSU/edit#gid=615510512"
},
"filtersUI": {
"values": [
{
"lookupColumn": "user_id",
"lookupValue": "={{$json.user_id}}"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.googleSheets",
"typeVersion": 4.7,
"position": [
-3520,
14096
],
"id": "d5e6b2b6-0996-49c7-adb9-b66235a6090a",
"name": "GSheet Get Tasks",
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"jsCode": "const rows = $input.all();\nconst original = $('Code Parse').first().json;\n\nlet message = '';\n\nconst padTime = (raw) => {\n const s = String(raw || '').trim();\n if (!s) return '07:00';\n const parts = s.split(':');\n if (parts.length !== 2) return '07:00';\n\n const h = Number(parts[0]);\n const m = Number(parts[1]);\n if (Number.isNaN(h) || Number.isNaN(m)) return '07:00';\n\n return `${String(h).padStart(2, '0')}:${String(m).padStart(2, '0')}`;\n};\n\nconst nowBkk = new Intl.DateTimeFormat('en-CA', {\n timeZone: 'Asia/Bangkok',\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n}).format(new Date());\n\nconst viewMode = String(original.view_mode || 'pending_all');\n\nlet filteredRows = rows.filter(r => {\n const status = String(r.json.status || '').toLowerCase();\n if (viewMode === 'done_all') return status === 'done';\n return status === 'pending';\n});\n\nif (viewMode === 'pending_today') {\n filteredRows = filteredRows.filter(r =>\n String(r.json.deadline_date || '') === nowBkk\n );\n}\n\nif (filteredRows.length === 0) {\n message =\n viewMode === 'done_all'\n ? '\u2705 \u0e22\u0e31\u0e07\u0e44\u0e21\u0e48\u0e21\u0e35\u0e07\u0e32\u0e19\u0e17\u0e35\u0e48\u0e40\u0e2a\u0e23\u0e47\u0e08\u0e41\u0e25\u0e49\u0e27\u0e04\u0e23\u0e31\u0e1a'\n : viewMode === 'pending_today'\n ? '\u2705 \u0e27\u0e31\u0e19\u0e19\u0e35\u0e49\u0e44\u0e21\u0e48\u0e21\u0e35\u0e07\u0e32\u0e19\u0e04\u0e49\u0e32\u0e07\u0e04\u0e23\u0e31\u0e1a \ud83c\udf89'\n : '\u2705 \u0e15\u0e2d\u0e19\u0e19\u0e35\u0e49\u0e44\u0e21\u0e48\u0e21\u0e35\u0e07\u0e32\u0e19\u0e04\u0e49\u0e32\u0e07\u0e40\u0e25\u0e22\u0e04\u0e23\u0e31\u0e1a \u0e17\u0e33\u0e04\u0e23\u0e1a\u0e2b\u0e21\u0e14\u0e41\u0e25\u0e49\u0e27! \ud83c\udf89';\n} else {\n const tasks = filteredRows\n .map(r => r.json)\n .map(t => {\n const timeStr = padTime(t.deadline_time);\n t._deadline = new Date(`${t.deadline_date}T${timeStr}:00+07:00`);\n return t;\n })\n .filter(t => !isNaN(t._deadline));\n\n const sorted = tasks.sort((a, b) => a._deadline - b._deadline);\n\n if (sorted.length === 0) {\n message = '\u26a0\ufe0f \u0e1e\u0e1a\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e07\u0e32\u0e19\u0e43\u0e19\u0e0a\u0e35\u0e15 \u0e41\u0e15\u0e48\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a\u0e27\u0e31\u0e19\u0e40\u0e27\u0e25\u0e32\u0e1a\u0e32\u0e07\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e44\u0e21\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07\u0e04\u0e23\u0e31\u0e1a';\n } else {\n const now = new Date();\n\n message =\n viewMode === 'done_all'\n ? `\u2705 \u0e07\u0e32\u0e19\u0e17\u0e35\u0e48\u0e40\u0e2a\u0e23\u0e47\u0e08\u0e41\u0e25\u0e49\u0e27 (${sorted.length} \u0e07\u0e32\u0e19)\\n`\n : viewMode === 'pending_today'\n ? `\ud83d\udccb \u0e07\u0e32\u0e19\u0e04\u0e49\u0e32\u0e07\u0e27\u0e31\u0e19\u0e19\u0e35\u0e49 (${sorted.length} \u0e07\u0e32\u0e19)\\n`\n : `\ud83d\udccb \u0e07\u0e32\u0e19\u0e04\u0e49\u0e32\u0e07\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14 (${sorted.length} \u0e07\u0e32\u0e19)\\n`;\n\n message += `\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n`;\n\n sorted.forEach((task, i) => {\n const dl = task._deadline;\n const overdue = viewMode !== 'done_all' && dl < now;\n\n const dlStr = dl.toLocaleDateString('th-TH', {\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n hour: '2-digit',\n minute: '2-digit',\n timeZone: 'Asia/Bangkok'\n });\n\n const icon =\n viewMode === 'done_all'\n ? '\u2705'\n : overdue\n ? '\ud83d\udd34'\n : '\ud83d\udccc';\n\n message += `${i + 1}. ${icon} ${task.task_name}\\n`;\n message += ` \ud83d\udcc5 ${dlStr}\\n`;\n message += ` \ud83d\udcda ${task.subject || '-'}\\n\\n`;\n });\n\n message += `\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n`;\n message +=\n viewMode === 'done_all'\n ? '\u0e1e\u0e34\u0e21\u0e1e\u0e4c \"\u0e21\u0e35\u0e07\u0e32\u0e19\u0e2d\u0e30\u0e44\u0e23\u0e1a\u0e49\u0e32\u0e07\" \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e14\u0e39\u0e07\u0e32\u0e19\u0e04\u0e49\u0e32\u0e07\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14\u0e44\u0e14\u0e49\u0e04\u0e23\u0e31\u0e1a \ud83d\udccb'\n : '\u0e1e\u0e34\u0e21\u0e1e\u0e4c \"\u0e17\u0e33 [\u0e0a\u0e37\u0e48\u0e2d\u0e07\u0e32\u0e19] \u0e40\u0e2a\u0e23\u0e47\u0e08\u0e41\u0e25\u0e49\u0e27\" \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e2d\u0e31\u0e1b\u0e40\u0e14\u0e15\u0e19\u0e30\u0e04\u0e23\u0e31\u0e1a \u270f\ufe0f';\n }\n}\n\nreturn [{\n json: {\n user_id: original.user_id,\n replyToken: original.replyToken,\n reply_message: message\n }\n}];"
},
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
-3296,
14096
],
"id": "5ec3d0e8-e441-4561-8665-0574891675cf",
"name": "Code Format Task List"
},
{
"parameters": {
"jsCode": "const original = $input.first().json;\nconst base = $('Code Parse').first().json;\n\nreturn [{\n json: {\n user_id: original.user_id || base.user_id || '',\n replyToken: original.replyToken || base.replyToken || '',\n reply_message:\n base.reply_message ||\n original.reply_message ||\n '\u2753 \u0e02\u0e2d\u0e42\u0e17\u0e29\u0e04\u0e23\u0e31\u0e1a \u0e44\u0e21\u0e48\u0e40\u0e02\u0e49\u0e32\u0e43\u0e08\u0e04\u0e33\u0e2a\u0e31\u0e48\u0e07\u0e19\u0e35\u0e49\\n\\n\u0e25\u0e2d\u0e07\u0e1e\u0e34\u0e21\u0e1e\u0e4c\u0e41\u0e1a\u0e1a\u0e19\u0e35\u0e49\u0e19\u0e30\u0e04\u0e23\u0e31\u0e1a:\\n\u2022 \"\u0e21\u0e35\u0e1b\u0e23\u0e30\u0e0a\u0e38\u0e21 10 \u0e42\u0e21\u0e07\u0e1e\u0e23\u0e38\u0e48\u0e07\u0e19\u0e35\u0e49\"\\n\u2022 \"\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e2a\u0e48\u0e07 Report CSI403 \u0e27\u0e31\u0e19\u0e17\u0e35\u0e48 20\"\\n\u2022 \"\u0e17\u0e33 Assignment CSI401 \u0e40\u0e2a\u0e23\u0e47\u0e08\u0e41\u0e25\u0e49\u0e27\"\\n\u2022 \"\u0e21\u0e35\u0e07\u0e32\u0e19\u0e2d\u0e30\u0e44\u0e23\u0e1a\u0e49\u0e32\u0e07\"'\n }\n}];"
},
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
-3280,
15056
],
"id": "2cc803d0-2556-4c9e-8962-58e929c01eac",
"name": "Code Unknown Intent"
},
{
"parameters": {
"jsCode": "const item = $input.first().json;\nconst base = $('Code Parse').first().json;\n\nconst replyMsg = item.reply_message || base.reply_message || '\u0e14\u0e33\u0e40\u0e19\u0e34\u0e19\u0e01\u0e32\u0e23\u0e40\u0e23\u0e35\u0e22\u0e1a\u0e23\u0e49\u0e2d\u0e22\u0e04\u0e23\u0e31\u0e1a \u2705';\nconst replyToken = item.replyToken || base.replyToken || '';\n\nreturn [{ json: { replyToken, reply_message: replyMsg } }];"
},
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
-2624,
14256
],
"id": "c0ef9b93-783c-4ef9-8d0a-62e15aa235b1",
"name": "Code Merge Reply"
},
{
"parameters": {
"method": "POST",
"url": "https://api.line.me/v2/bot/message/reply",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "Bearer rFsUksuOenWdnm0Vqtqj5zJlHyjXJ/F1nuqA1JEvSo432rh9oSUjnKqScLuCb4tNFA8TocdVkk7sIuiXL6BB1pvLzZk1evZWqA+wUpXSoZRdJ4VMb7LnZBSyyCihircrV6oSiKzG9fbq0yG7vWA+qwdB04t89/1O/w1cDnyilFU="
},
{
"name": "Content-Type",
"value": "application/json"
}
]
},
"sendBody": true,
"bodyParameters": {
"parameters": [
{
"name": "replyToken",
"value": "={{$json.replyToken}}"
},
{
"name": "messages",
"value": "={{ [ { type: \"text\", text: $json.reply_message } ] }}"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.4,
"position": [
-2400,
14256
],
"id": "2eced224-b4e0-42c8-a455-0507a7b01b3f",
"name": "LINE Reply API4"
},
{
"parameters": {
"method": "POST",
"url": "https://minddatatech.com/llm-api/v1/chat/completions",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "Bearer "
},
{
"name": "Content-Type",
"value": "application/json"
}
]
},
"sendBody": true,
"specifyBody": "json",
"jsonBody": "={{\nJSON.stringify({\n model: \"gpt-oss:20b\",\n messages: [\n {\n role: \"system\",\n content:\n`\u0e27\u0e34\u0e40\u0e04\u0e23\u0e32\u0e30\u0e2b\u0e4c\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e08\u0e32\u0e01\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49 \u0e41\u0e25\u0e49\u0e27\u0e15\u0e2d\u0e1a\u0e40\u0e1b\u0e47\u0e19 JSON \u0e40\u0e17\u0e48\u0e32\u0e19\u0e31\u0e49\u0e19 \u0e2b\u0e49\u0e32\u0e21\u0e21\u0e35 markdown \u0e2b\u0e49\u0e32\u0e21\u0e21\u0e35\u0e04\u0e33\u0e2d\u0e18\u0e34\u0e1a\u0e32\u0e22\u0e40\u0e1e\u0e34\u0e48\u0e21 \u0e2b\u0e49\u0e32\u0e21\u0e21\u0e35\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e2d\u0e37\u0e48\u0e19\u0e19\u0e2d\u0e01\u0e08\u0e32\u0e01 JSON\n\n== Context \u0e08\u0e32\u0e01 session \u0e01\u0e48\u0e2d\u0e19\u0e2b\u0e19\u0e49\u0e32 ==\ntask_name: ${$json.session_task_name}\nsubject: ${$json.session_subject}\ntask_type: ${$json.session_task_type}\ndeadline_date: ${$json.session_deadline_date}\ndeadline_time: ${$json.session_deadline_time}\nhas_pending_session: ${$json.has_pending_session}\n\u0e27\u0e31\u0e19\u0e17\u0e35\u0e48\u0e27\u0e31\u0e19\u0e19\u0e35\u0e49 (Bangkok): ${$now.toFormat('yyyy-MM-dd')}\n\n== \u0e01\u0e0e\u0e2a\u0e33\u0e04\u0e31\u0e0d\u0e17\u0e35\u0e48\u0e2a\u0e38\u0e14: has_pending_session ==\n\u0e16\u0e49\u0e32 has_pending_session = \"true\":\n \u2192 intent = \"add_task\" \u0e40\u0e2a\u0e21\u0e2d\n \u2192 \u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e01\u0e33\u0e25\u0e31\u0e07\u0e15\u0e2d\u0e1a\u0e04\u0e33\u0e16\u0e32\u0e21\u0e17\u0e35\u0e48 bot \u0e16\u0e32\u0e21\u0e44\u0e27\u0e49\u0e23\u0e2d\u0e1a\u0e01\u0e48\u0e2d\u0e19\n \u2192 \u0e43\u0e2b\u0e49\u0e40\u0e2d\u0e32\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25 session \u0e17\u0e35\u0e48\u0e21\u0e35\u0e2d\u0e22\u0e39\u0e48 + \u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e43\u0e2b\u0e21\u0e48 \u0e21\u0e32 MERGE \u0e01\u0e31\u0e19\n \u2192 \u0e2b\u0e49\u0e32\u0e21\u0e2a\u0e23\u0e49\u0e32\u0e07 task \u0e43\u0e2b\u0e21\u0e48 \u0e2b\u0e49\u0e32\u0e21 treat \u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e2a\u0e31\u0e49\u0e19\u0e46 \u0e27\u0e48\u0e32\u0e40\u0e1b\u0e47\u0e19\u0e04\u0e33\u0e2a\u0e31\u0e48\u0e07\u0e43\u0e2b\u0e21\u0e48\n\n\u0e15\u0e31\u0e27\u0e2d\u0e22\u0e48\u0e32\u0e07:\nsession: task_name=\"\u0e41\u0e02\u0e48\u0e07\" deadline_date=\"2025-04-18\" (\u0e44\u0e21\u0e48\u0e21\u0e35\u0e40\u0e27\u0e25\u0e32)\nuser \u0e1e\u0e34\u0e21\u0e1e\u0e4c: \"10 \u0e42\u0e21\u0e07\"\n\u2192 task_name=\"\u0e41\u0e02\u0e48\u0e07\" deadline_date=\"2025-04-18\" deadline_time=\"10:00\" has_time=true process_status=\"complete\"\n\n\u0e15\u0e31\u0e27\u0e2d\u0e22\u0e48\u0e32\u0e07:\nsession: task_name=\"\u0e41\u0e02\u0e48\u0e07\" (\u0e44\u0e21\u0e48\u0e21\u0e35\u0e17\u0e31\u0e49\u0e07 date \u0e41\u0e25\u0e30 time)\nuser \u0e1e\u0e34\u0e21\u0e1e\u0e4c: \"\u0e1e\u0e23\u0e38\u0e48\u0e07\u0e19\u0e35\u0e49\u0e15\u0e35 5\"\n\u2192 task_name=\"\u0e41\u0e02\u0e48\u0e07\" deadline_date=(\u0e27\u0e31\u0e19\u0e1e\u0e23\u0e38\u0e48\u0e07\u0e19\u0e35\u0e49) deadline_time=\"05:00\" has_time=true process_status=\"complete\"\n\n== \u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a JSON \u0e17\u0e35\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e15\u0e2d\u0e1a ==\n{\n \"intent\": \"add_task | complete_task | view_tasks | delete_task | edit_task | help | unknown\",\n \"process_status\": \"complete | incomplete\",\n \"task_name\": \"\",\n \"new_task_name\": \"\",\n \"subject\": \"\",\n \"task_type\": \"Assignment | Meeting | Personal\",\n \"deadline_date\": \"YYYY-MM-DD\",\n \"deadline_time\": \"HH:mm\",\n \"has_time\": false,\n \"new_status\": \"\",\n \"status\": \"pending\",\n \"reply_message\": \"\"\n}\n\n== \u0e01\u0e15\u0e34\u0e01\u0e32 intent ==\n- add_task \u2192 \u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e07\u0e32\u0e19\u0e43\u0e2b\u0e21\u0e48 \u0e2b\u0e23\u0e37\u0e2d\u0e01\u0e33\u0e25\u0e31\u0e07\u0e15\u0e2d\u0e1a follow-up \u0e02\u0e2d\u0e07 bot\n- complete_task \u2192 \u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e1a\u0e2d\u0e01\u0e27\u0e48\u0e32\u0e07\u0e32\u0e19\u0e40\u0e2a\u0e23\u0e47\u0e08\u0e41\u0e25\u0e49\u0e27 \u0e40\u0e0a\u0e48\u0e19 \"\u0e2a\u0e48\u0e07\u0e41\u0e25\u0e49\u0e27\", \"\u0e40\u0e2a\u0e23\u0e47\u0e08\u0e41\u0e25\u0e49\u0e27\", \"\u0e17\u0e33\u0e40\u0e2a\u0e23\u0e47\u0e08\", \"\u0e40\u0e23\u0e35\u0e22\u0e1a\u0e23\u0e49\u0e2d\u0e22\u0e41\u0e25\u0e49\u0e27\"\n- view_tasks \u2192 \u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e16\u0e32\u0e21\u0e14\u0e39\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e07\u0e32\u0e19 \u0e40\u0e0a\u0e48\u0e19 \"\u0e21\u0e35\u0e07\u0e32\u0e19\u0e2d\u0e30\u0e44\u0e23\u0e1a\u0e49\u0e32\u0e07\", \"\u0e07\u0e32\u0e19\u0e04\u0e49\u0e32\u0e07\u0e21\u0e35\u0e2d\u0e30\u0e44\u0e23\", \"\u0e02\u0e2d\u0e14\u0e39\u0e07\u0e32\u0e19\"\n- delete_task \u2192 \u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e25\u0e1a\u0e07\u0e32\u0e19 \u0e40\u0e0a\u0e48\u0e19 \"\u0e25\u0e1a\u0e07\u0e32\u0e19 X\", \"\u0e22\u0e01\u0e40\u0e25\u0e34\u0e01\u0e07\u0e32\u0e19 X\", \"\u0e44\u0e21\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e17\u0e33 X \u0e41\u0e25\u0e49\u0e27\", \"\u0e25\u0e1a\u0e17\u0e34\u0e49\u0e07 X\"\n- edit_task \u2192 \u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e41\u0e01\u0e49\u0e44\u0e02\u0e07\u0e32\u0e19 \u0e40\u0e0a\u0e48\u0e19 \"\u0e40\u0e25\u0e37\u0e48\u0e2d\u0e19\u0e07\u0e32\u0e19 X \u0e40\u0e1b\u0e47\u0e19\u0e27\u0e31\u0e19\u0e17\u0e35\u0e48 Y\", \"\u0e41\u0e01\u0e49\u0e40\u0e27\u0e25\u0e32\u0e07\u0e32\u0e19 X \u0e40\u0e1b\u0e47\u0e19 10 \u0e42\u0e21\u0e07\", \"\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19 deadline X\", \"\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e0a\u0e37\u0e48\u0e2d\u0e07\u0e32\u0e19 X \u0e40\u0e1b\u0e47\u0e19 Y\", \"\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e2a\u0e16\u0e32\u0e19\u0e30\u0e07\u0e32\u0e19 X \u0e40\u0e1b\u0e47\u0e19 done\"\n- help \u2192 \u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e16\u0e32\u0e21\u0e27\u0e34\u0e18\u0e35\u0e43\u0e0a\u0e49 \u0e40\u0e0a\u0e48\u0e19 \"\u0e27\u0e34\u0e18\u0e35\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\", \"\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e22\u0e31\u0e07\u0e44\u0e07\", \"\u0e43\u0e0a\u0e49\u0e22\u0e31\u0e07\u0e44\u0e07\", \"\u0e2a\u0e2d\u0e19\u0e43\u0e0a\u0e49\u0e2b\u0e19\u0e48\u0e2d\u0e22\", \"\u0e04\u0e33\u0e2a\u0e31\u0e48\u0e07\u0e21\u0e35\u0e2d\u0e30\u0e44\u0e23\u0e1a\u0e49\u0e32\u0e07\"\n- unknown \u2192 \u0e44\u0e21\u0e48\u0e40\u0e02\u0e49\u0e32\u0e43\u0e08\n\n== \u0e01\u0e15\u0e34\u0e01\u0e32\u0e1e\u0e34\u0e40\u0e28\u0e29\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a delete_task ==\n- task_name \u0e04\u0e37\u0e2d\u0e0a\u0e37\u0e48\u0e2d\u0e07\u0e32\u0e19\u0e40\u0e14\u0e34\u0e21\u0e17\u0e35\u0e48\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e25\u0e1a\n- process_status = \"complete\" \u0e40\u0e2a\u0e21\u0e2d\n- field \u0e2d\u0e37\u0e48\u0e19\u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e40\u0e01\u0e35\u0e48\u0e22\u0e27\u0e02\u0e49\u0e2d\u0e07\u0e43\u0e2b\u0e49\u0e40\u0e1b\u0e47\u0e19\u0e04\u0e48\u0e32\u0e27\u0e48\u0e32\u0e07\n\n== \u0e01\u0e15\u0e34\u0e01\u0e32\u0e1e\u0e34\u0e40\u0e28\u0e29\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a edit_task ==\n- task_name = \u0e0a\u0e37\u0e48\u0e2d\u0e07\u0e32\u0e19\u0e40\u0e14\u0e34\u0e21\u0e17\u0e35\u0e48\u0e43\u0e0a\u0e49\u0e04\u0e49\u0e19\u0e2b\u0e32\n- new_task_name = \u0e0a\u0e37\u0e48\u0e2d\u0e43\u0e2b\u0e21\u0e48 \u0e16\u0e49\u0e32\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e0a\u0e37\u0e48\u0e2d\n- deadline_date = \u0e27\u0e31\u0e19\u0e17\u0e35\u0e48\u0e43\u0e2b\u0e21\u0e48 \u0e16\u0e49\u0e32\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e27\u0e31\u0e19\n- deadline_time = \u0e40\u0e27\u0e25\u0e32\u0e43\u0e2b\u0e21\u0e48 \u0e16\u0e49\u0e32\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e40\u0e27\u0e25\u0e32\n- new_status = pending | done | session \u0e16\u0e49\u0e32\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e2a\u0e16\u0e32\u0e19\u0e30\n- \u0e16\u0e49\u0e32\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19 field \u0e44\u0e2b\u0e19 \u0e43\u0e2b\u0e49 field \u0e19\u0e31\u0e49\u0e19\u0e40\u0e1b\u0e47\u0e19 \"\"\n- process_status = \"complete\" \u0e40\u0e2a\u0e21\u0e2d\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a edit_task\n\n\u0e15\u0e31\u0e27\u0e2d\u0e22\u0e48\u0e32\u0e07:\n\"\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e0a\u0e37\u0e48\u0e2d\u0e07\u0e32\u0e19 Report \u0e40\u0e1b\u0e47\u0e19 Final Report\"\n\u2192 {\n \"intent\":\"edit_task\",\n \"process_status\":\"complete\",\n \"task_name\":\"Report\",\n \"new_task_name\":\"Final Report\",\n \"subject\":\"\",\n \"task_type\":\"Personal\",\n \"deadline_date\":\"\",\n \"deadline_time\":\"\",\n \"has_time\":false,\n \"new_status\":\"\",\n \"status\":\"pending\",\n \"reply_message\":\"\"\n}\n\n\"\u0e40\u0e25\u0e37\u0e48\u0e2d\u0e19\u0e07\u0e32\u0e19 Report \u0e40\u0e1b\u0e47\u0e19\u0e1e\u0e23\u0e38\u0e48\u0e07\u0e19\u0e35\u0e49 10 \u0e42\u0e21\u0e07\"\n\u2192 {\n \"intent\":\"edit_task\",\n \"process_status\":\"complete\",\n \"task_name\":\"Report\",\n \"new_task_name\":\"\",\n \"subject\":\"\",\n \"task_type\":\"Personal\",\n \"deadline_date\":\"(\u0e27\u0e31\u0e19\u0e1e\u0e23\u0e38\u0e48\u0e07\u0e19\u0e35\u0e49)\",\n \"deadline_time\":\"10:00\",\n \"has_time\":true,\n \"new_status\":\"\",\n \"status\":\"pending\",\n \"reply_message\":\"\"\n}\n\n\"\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e2a\u0e16\u0e32\u0e19\u0e30\u0e07\u0e32\u0e19 Report \u0e40\u0e1b\u0e47\u0e19 done\"\n\u2192 {\n \"intent\":\"edit_task\",\n \"process_status\":\"complete\",\n \"task_name\":\"Report\",\n \"new_task_name\":\"\",\n \"subject\":\"\",\n \"task_type\":\"Personal\",\n \"deadline_date\":\"\",\n \"deadline_time\":\"\",\n \"has_time\":false,\n \"new_status\":\"done\",\n \"status\":\"pending\",\n \"reply_message\":\"\"\n}\n\n\"\u0e41\u0e01\u0e49\u0e07\u0e32\u0e19 Report \u0e40\u0e1b\u0e47\u0e19 Final Report \u0e1e\u0e23\u0e38\u0e48\u0e07\u0e19\u0e35\u0e49 10 \u0e42\u0e21\u0e07 \u0e2a\u0e16\u0e32\u0e19\u0e30 done\"\n\u2192 {\n \"intent\":\"edit_task\",\n \"process_status\":\"complete\",\n \"task_name\":\"Report\",\n \"new_task_name\":\"Final Report\",\n \"subject\":\"\",\n \"task_type\":\"Personal\",\n \"deadline_date\":\"(\u0e27\u0e31\u0e19\u0e1e\u0e23\u0e38\u0e48\u0e07\u0e19\u0e35\u0e49)\",\n \"deadline_time\":\"10:00\",\n \"has_time\":true,\n \"new_status\":\"done\",\n \"status\":\"pending\",\n \"reply_message\":\"\"\n}\n\n== \u0e01\u0e15\u0e34\u0e01\u0e32 process_status (\u0e40\u0e09\u0e1e\u0e32\u0e30 add_task) ==\n- \"complete\" \u2192 \u0e21\u0e35 task_name \u0e41\u0e25\u0e30 deadline_date \u0e04\u0e23\u0e1a (\u0e2b\u0e25\u0e31\u0e07 merge session \u0e41\u0e25\u0e49\u0e27)\n- \"incomplete\" \u2192 \u0e22\u0e31\u0e07\u0e02\u0e32\u0e14 task_name \u0e2b\u0e23\u0e37\u0e2d deadline_date \u2192 reply_message \u0e16\u0e32\u0e21\u0e40\u0e09\u0e1e\u0e32\u0e30\u0e2a\u0e34\u0e48\u0e07\u0e17\u0e35\u0e48\u0e02\u0e32\u0e14 \u0e16\u0e32\u0e21\u0e17\u0e35\u0e25\u0e30\u0e2d\u0e22\u0e48\u0e32\u0e07\n- intent \u0e2d\u0e37\u0e48\u0e19 \u2192 process_status = \"complete\" \u0e40\u0e2a\u0e21\u0e2d\n\n== \u0e01\u0e15\u0e34\u0e01\u0e32 task_type ==\n- Meeting \u2192 \u0e1b\u0e23\u0e30\u0e0a\u0e38\u0e21 \u0e19\u0e31\u0e14 \u0e1e\u0e1a\u0e2d\u0e32\u0e08\u0e32\u0e23\u0e22\u0e4c \u0e41\u0e02\u0e48\u0e07 \u0e0b\u0e49\u0e2d\u0e21 \u0e01\u0e34\u0e08\u0e01\u0e23\u0e23\u0e21 \u0e2a\u0e2d\u0e1a\n- Assignment \u2192 \u0e07\u0e32\u0e19 \u0e2a\u0e48\u0e07\u0e23\u0e32\u0e22\u0e07\u0e32\u0e19 \u0e01\u0e32\u0e23\u0e1a\u0e49\u0e32\u0e19 \u0e42\u0e1b\u0e23\u0e40\u0e08\u0e01\u0e15\u0e4c report quiz assignment\n- Personal \u2192 \u0e40\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e17\u0e31\u0e48\u0e27\u0e44\u0e1b\u0e2d\u0e37\u0e48\u0e19\u0e46\n- \u0e16\u0e49\u0e32 session \u0e21\u0e35 task_type \u0e2d\u0e22\u0e39\u0e48\u0e41\u0e25\u0e49\u0e27\u0e43\u0e2b\u0e49\u0e43\u0e0a\u0e49\u0e04\u0e48\u0e32\u0e19\u0e31\u0e49\u0e19 \u0e2d\u0e22\u0e48\u0e32 override\n- \u0e16\u0e49\u0e32\u0e40\u0e1b\u0e47\u0e19 edit_task / delete_task / complete_task \u0e41\u0e25\u0e30\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e23\u0e30\u0e1a\u0e38 task_type \u0e43\u0e2b\u0e21\u0e48 \u0e43\u0e2b\u0e49\u0e43\u0e0a\u0e49 \"Personal\"\n\n== \u0e01\u0e15\u0e34\u0e01\u0e32\u0e27\u0e31\u0e19\u0e17\u0e35\u0e48 ==\n- deadline_date \u0e15\u0e49\u0e2d\u0e07\u0e40\u0e1b\u0e47\u0e19 YYYY-MM-DD \u0e40\u0e2a\u0e21\u0e2d \u0e16\u0e49\u0e32\u0e21\u0e35\u0e01\u0e32\u0e23\u0e23\u0e30\u0e1a\u0e38\u0e27\u0e31\u0e19\n- \"\u0e1e\u0e23\u0e38\u0e48\u0e07\u0e19\u0e35\u0e49\" = \u0e27\u0e31\u0e19\u0e16\u0e31\u0e14\u0e08\u0e32\u0e01\u0e27\u0e31\u0e19\u0e19\u0e35\u0e49\n- \"\u0e21\u0e30\u0e23\u0e37\u0e19\" = \u0e2a\u0e2d\u0e07\u0e27\u0e31\u0e19\u0e16\u0e31\u0e14\u0e08\u0e32\u0e01\u0e27\u0e31\u0e19\u0e19\u0e35\u0e49\n- \"\u0e27\u0e31\u0e19\u0e08\u0e31\u0e19\u0e17\u0e23\u0e4c\" = \u0e27\u0e31\u0e19\u0e08\u0e31\u0e19\u0e17\u0e23\u0e4c\u0e17\u0e35\u0e48\u0e43\u0e01\u0e25\u0e49\u0e17\u0e35\u0e48\u0e2a\u0e38\u0e14\u0e17\u0e35\u0e48\u0e22\u0e31\u0e07\u0e44\u0e21\u0e48\u0e1c\u0e48\u0e32\u0e19\u0e21\u0e32\n- \"\u0e27\u0e31\u0e19\u0e17\u0e35\u0e48 20\" = \u0e27\u0e31\u0e19\u0e17\u0e35\u0e48 20 \u0e02\u0e2d\u0e07\u0e40\u0e14\u0e37\u0e2d\u0e19\u0e1b\u0e31\u0e08\u0e08\u0e38\u0e1a\u0e31\u0e19 (\u0e16\u0e49\u0e32\u0e1c\u0e48\u0e32\u0e19\u0e41\u0e25\u0e49\u0e27\u0e43\u0e2b\u0e49\u0e40\u0e1b\u0e47\u0e19\u0e40\u0e14\u0e37\u0e2d\u0e19\u0e2b\u0e19\u0e49\u0e32)\n- \u0e16\u0e49\u0e32 session \u0e21\u0e35 deadline_date \u0e2d\u0e22\u0e39\u0e48\u0e41\u0e25\u0e49\u0e27 \u0e41\u0e25\u0e30 user \u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e1a\u0e2d\u0e01\u0e27\u0e31\u0e19\u0e43\u0e2b\u0e21\u0e48 \u2192 \u0e43\u0e0a\u0e49\u0e04\u0e48\u0e32\u0e40\u0e14\u0e34\u0e21\n- \u0e16\u0e49\u0e32\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e41\u0e01\u0e49\u0e27\u0e31\u0e19\u0e43\u0e19 edit_task \u2192 deadline_date = \"\"\n\n== \u0e01\u0e15\u0e34\u0e01\u0e32\u0e40\u0e27\u0e25\u0e32 ==\n- deadline_time \u0e15\u0e49\u0e2d\u0e07\u0e40\u0e1b\u0e47\u0e19 HH:mm (24 \u0e0a\u0e21.) \u0e16\u0e49\u0e32\u0e21\u0e35\u0e01\u0e32\u0e23\u0e23\u0e30\u0e1a\u0e38\u0e40\u0e27\u0e25\u0e32\n- \"10 \u0e42\u0e21\u0e07\" / \"10 \u0e42\u0e21\u0e07\u0e40\u0e0a\u0e49\u0e32\" = \"10:00\"\n- \"\u0e1a\u0e48\u0e32\u0e22 2\" / \"14.00\" = \"14:00\"\n- \"\u0e15\u0e35 3\" = \"03:00\"\n- \"\u0e40\u0e22\u0e47\u0e19 5\" = \"17:00\"\n- \"\u0e40\u0e17\u0e35\u0e48\u0e22\u0e07\" = \"12:00\"\n- \"\u0e17\u0e38\u0e48\u0e21\u0e04\u0e23\u0e36\u0e48\u0e07\" = \"19:30\"\n- has_time = true \u0e40\u0e21\u0e37\u0e48\u0e2d\u0e21\u0e35\u0e40\u0e27\u0e25\u0e32\u0e0a\u0e31\u0e14\u0e40\u0e08\u0e19\n- has_time = false \u0e40\u0e21\u0e37\u0e48\u0e2d\u0e44\u0e21\u0e48\u0e21\u0e35\u0e40\u0e27\u0e25\u0e32\u0e0a\u0e31\u0e14\u0e40\u0e08\u0e19\n- \u0e16\u0e49\u0e32 session \u0e21\u0e35 deadline_time \u0e2d\u0e22\u0e39\u0e48\u0e41\u0e25\u0e49\u0e27 \u0e41\u0e25\u0e30 user \u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e1a\u0e2d\u0e01\u0e40\u0e27\u0e25\u0e32\u0e43\u0e2b\u0e21\u0e48 \u2192 \u0e43\u0e0a\u0e49\u0e04\u0e48\u0e32\u0e40\u0e14\u0e34\u0e21\n- \u0e16\u0e49\u0e32\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e41\u0e01\u0e49\u0e40\u0e27\u0e25\u0e32\u0e43\u0e19 edit_task \u2192 deadline_time = \"\"\n\n== \u0e01\u0e15\u0e34\u0e01\u0e32 new_status ==\n- \u0e43\u0e0a\u0e49\u0e44\u0e14\u0e49\u0e40\u0e09\u0e1e\u0e32\u0e30 pending, done, session \u0e40\u0e17\u0e48\u0e32\u0e19\u0e31\u0e49\u0e19\n- \u0e16\u0e49\u0e32\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e1e\u0e39\u0e14\u0e27\u0e48\u0e32 \"\u0e40\u0e2a\u0e23\u0e47\u0e08\u0e41\u0e25\u0e49\u0e27\", \"\u0e2a\u0e48\u0e07\u0e41\u0e25\u0e49\u0e27\", \"\u0e40\u0e23\u0e35\u0e22\u0e1a\u0e23\u0e49\u0e2d\u0e22\u0e41\u0e25\u0e49\u0e27\" \u0e41\u0e25\u0e30\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e2d\u0e22\u0e39\u0e48\u0e43\u0e19\u0e23\u0e39\u0e1b edit_task \u0e43\u0e2b\u0e49\u0e43\u0e0a\u0e49 intent = \"complete_task\"\n- \u0e16\u0e49\u0e32\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e1a\u0e2d\u0e01 \"\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e2a\u0e16\u0e32\u0e19\u0e30...\" \u0e43\u0e2b\u0e49\u0e43\u0e0a\u0e49 intent = \"edit_task\"\n- \u0e16\u0e49\u0e32\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e2a\u0e16\u0e32\u0e19\u0e30 \u0e43\u0e2b\u0e49 new_status = \"\"\n\n== \u0e01\u0e15\u0e34\u0e01\u0e32 subject ==\n- \u0e43\u0e2a\u0e48\u0e0a\u0e37\u0e48\u0e2d\u0e27\u0e34\u0e0a\u0e32/\u0e2b\u0e21\u0e27\u0e14\u0e2b\u0e21\u0e39\u0e48\u0e16\u0e49\u0e32\u0e21\u0e35 \u0e40\u0e0a\u0e48\u0e19 \"CSI403\", \"\u0e20\u0e32\u0e29\u0e32\u0e2d\u0e31\u0e07\u0e01\u0e24\u0e29\"\n- \u0e16\u0e49\u0e32\u0e44\u0e21\u0e48\u0e21\u0e35\u0e43\u0e2b\u0e49\u0e40\u0e1b\u0e47\u0e19 \"\"\n- \u0e16\u0e49\u0e32 session \u0e21\u0e35\u0e2d\u0e22\u0e39\u0e48\u0e41\u0e25\u0e49\u0e27\u0e43\u0e2b\u0e49\u0e43\u0e0a\u0e49\u0e04\u0e48\u0e32\u0e40\u0e14\u0e34\u0e21\n\n== \u0e01\u0e15\u0e34\u0e01\u0e32 reply_message ==\n- \u0e16\u0e49\u0e32 incomplete: \u0e16\u0e32\u0e21\u0e40\u0e09\u0e1e\u0e32\u0e30 field \u0e17\u0e35\u0e48\u0e02\u0e32\u0e14 \u0e40\u0e0a\u0e48\u0e19 \"\u0e27\u0e31\u0e19\u0e44\u0e2b\u0e19\u0e04\u0e23\u0e31\u0e1a?\" \u0e2b\u0e23\u0e37\u0e2d \"\u0e01\u0e35\u0e48\u0e42\u0e21\u0e07\u0e14\u0e35\u0e04\u0e23\u0e31\u0e1a?\"\n- \u0e16\u0e49\u0e32\u0e02\u0e32\u0e14 task_name \u0e43\u0e2b\u0e49\u0e16\u0e32\u0e21 \"\u0e07\u0e32\u0e19\u0e2d\u0e30\u0e44\u0e23\u0e04\u0e23\u0e31\u0e1a?\"\n- \u0e16\u0e49\u0e32\u0e02\u0e32\u0e14 deadline_date \u0e43\u0e2b\u0e49\u0e16\u0e32\u0e21 \"\u0e27\u0e31\u0e19\u0e44\u0e2b\u0e19\u0e04\u0e23\u0e31\u0e1a?\"\n- \u0e16\u0e49\u0e32 complete: \u0e43\u0e2b\u0e49\u0e40\u0e1b\u0e47\u0e19 \"\"\n- \u0e15\u0e49\u0e2d\u0e07\u0e40\u0e1b\u0e47\u0e19\u0e20\u0e32\u0e29\u0e32\u0e44\u0e17\u0e22 \u0e01\u0e23\u0e30\u0e0a\u0e31\u0e1a \u0e2a\u0e38\u0e20\u0e32\u0e1e\n\n== \u0e01\u0e15\u0e34\u0e01\u0e32\u0e04\u0e27\u0e32\u0e21\u0e41\u0e21\u0e48\u0e19\u0e22\u0e33 ==\n- \u0e15\u0e2d\u0e1a\u0e40\u0e1b\u0e47\u0e19 JSON valid 100%\n- \u0e2b\u0e49\u0e32\u0e21\u0e43\u0e2a\u0e48 markdown\n- \u0e2b\u0e49\u0e32\u0e21\u0e43\u0e2a\u0e48 \\`\\`\\`json\n- \u0e2b\u0e49\u0e32\u0e21\u0e21\u0e35\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e2d\u0e37\u0e48\u0e19\u0e19\u0e2d\u0e01\u0e08\u0e32\u0e01 JSON\n- \u0e16\u0e49\u0e32\u0e44\u0e21\u0e48\u0e41\u0e19\u0e48\u0e43\u0e08 intent \u0e43\u0e2b\u0e49\u0e43\u0e0a\u0e49 unknown`\n },\n {\n role: \"user\",\n content: $json.text\n }\n ]\n})\n}}",
"options": {}
},
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.4,
"position": [
-4864,
14336
],
"id": "36b34954-4879-4d99-b8c4-cdf1c23a49cd",
"name": "HTTP Request1"
},
{
"parameters": {
"documentId": {
"__rl": true,
"value": "1lBLT-m-s8j8RI-BVPFd2rffP9ftf0tQG3t9yrHmPgSU",
"mode": "list",
"cachedResultName": "Copy of NewCSI403",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1lBLT-m-s8j8RI-BVPFd2rffP9ftf0tQG3t9yrHmPgSU/edit?usp=drivesdk"
},
"sheetName": {
"__rl": true,
"value": 615510512,
"mode": "list",
"cachedResultName": "tasks",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1lBLT-m-s8j8RI-BVPFd2rffP9ftf0tQG3t9yrHmPgSU/edit#gid=615510512"
},
"filtersUI": {
"values": [
{
"lookupColumn": "user_id",
"lookupValue": "={{$json.userId}}"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.googleSheets",
"typeVersion": 4.7,
"position": [
-5312,
14336
],
"id": "792d6b18-5b61-4bb0-94a8-0478afdbc8fb",
"name": "GSheet Read Session",
"alwaysOutputData": true,
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"jsCode": "const editFields = $('Edit Fields1').first().json;\nconst sessionRows = $input.all();\n\n// session \u0e25\u0e48\u0e32\u0e2a\u0e38\u0e14\u0e02\u0e2d\u0e07 user\nconst sessionCandidates = sessionRows\n .filter(r => String(r.json.user_id || '') === String(editFields.userId || ''))\n .filter(r => String(r.json.status || '').toLowerCase() === 'session')\n .map(r => r.json)\n .sort((a, b) => {\n const aRow = Number(a.row_number || 0);\n const bRow = Number(b.row_number || 0);\n if (aRow !== bRow) return bRow - aRow;\n\n const aTime = new Date(a.created_at || 0).getTime();\n const bTime = new Date(b.created_at || 0).getTime();\n return bTime - aTime;\n });\n\nconst sessionRow = sessionCandidates[0] || null;\nconst session = sessionRow || {};\n\nconst hasActiveSession = !!(\n sessionRow &&\n (\n String(session.task_name || '').trim() !== '' ||\n String(session.deadline_date || '').trim() !== '' ||\n String(session.deadline_time || '').trim() !== '' ||\n String(session.subject || '').trim() !== ''\n )\n);\n\n// task \u0e25\u0e48\u0e32\u0e2a\u0e38\u0e14\u0e08\u0e23\u0e34\u0e07\u0e02\u0e2d\u0e07 user (\u0e44\u0e21\u0e48\u0e40\u0e2d\u0e32 session)\nconst realRows = sessionRows\n .map(r => r.json)\n .filter(r =>\n String(r.user_id || '') === String(editFields.userId || '') &&\n String(r.status || '').toLowerCase() !== 'session'\n )\n .sort((a, b) => {\n const aRow = Number(a.row_number || 0);\n const bRow = Number(b.row_number || 0);\n if (aRow !== bRow) return bRow - aRow;\n\n const aTime = new Date(a.created_at || 0).getTime();\n const bTime = new Date(b.created_at || 0).getTime();\n return bTime - aTime;\n });\n\nconst latestTask = realRows[0] || {};\n\nreturn [{\n json: {\n userId: editFields.userId,\n replyToken: editFields.replyToken,\n text: editFields.text,\n\n session_task_name: session.task_name || '',\n session_subject: session.subject || '',\n session_task_type: session.task_type || '',\n session_deadline_date: session.deadline_date || '',\n session_deadline_time: session.deadline_time || '',\n session_has_time: session.has_time || '',\n has_pending_session: hasActiveSession ? 'true' : 'false',\n\n latest_task_name: latestTask.task_name || '',\n latest_subject: latestTask.subject || '',\n latest_task_type: latestTask.task_type || '',\n latest_deadline_date: latestTask.deadline_date || '',\n latest_deadline_time: latestTask.deadline_time || '',\n latest_status: latestTask.status || '',\n\n last_task_name: latestTask.task_name || ''\n }\n}];"
},
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
-5088,
14336
],
"id": "206ceaf7-f785-4d86-8850-a2fb78c1c985",
"name": "Code Merge Session"
},
{
"parameters": {
"operation": "append",
"documentId": {
"__rl": true,
"value": "1lBLT-m-s8j8RI-BVPFd2rffP9ftf0tQG3t9yrHmPgSU",
"mode": "list",
"cachedResultName": "Copy of NewCSI403",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1lBLT-m-s8j8RI-BVPFd2rffP9ftf0tQG3t9yrHmPgSU/edit?usp=drivesdk"
},
"sheetName": {
"__rl": true,
"value": 615510512,
"mode": "list",
"cachedResultName": "tasks",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1lBLT-m-s8j8RI-BVPFd2rffP9ftf0tQG3t9yrHmPgSU/edit#gid=615510512"
},
"columns": {
"mappingMode": "defineBelow",
"value": {
"user_id": "={{ $json.user_id }}",
"task_name": "={{ $json.task_name }}",
"subject": "={{ $json.subject }}",
"task_type": "={{ $json.task_type }}",
"deadline_date": "={{ $json.deadline_date }}",
"deadline_time": "={{ $json.deadline_time }}",
"has_time": "={{ $json.has_time }}",
"status": "session",
"notified_1h": "false",
"notified_15m": "false",
"created_at": "={{ $json.created_at }}"
},
"matchingColumns": [],
"schema": [
{
"id": "task_id",
"displayName": "task_id",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true,
"removed": true
},
{
"id": "user_id",
"displayName": "user_id",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true,
"removed": false
},
{
"id": "task_name",
"displayName": "task_name",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true
},
{
"id": "subject",
"displayName": "subject",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true
},
{
"id": "task_type",
"displayName": "task_type",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true
},
{
"id": "deadline_date",
"displayName": "deadline_date",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true
},
{
"id": "deadline_time",
"displayName": "deadline_time",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true
},
{
"id": "status",
"displayName": "status",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true,
"removed": false
},
{
"id": "notified_1h",
"displayName": "notified_1h",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true
},
{
"id": "notified_15m",
"displayName": "notified_15m",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true
},
{
"id": "has_time",
"displayName": "has_time",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true
},
{
"id": "created_at",
"displayName": "created_at",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true
}
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {}
},
"type": "n8n-nodes-base.googleSheets",
"typeVersion": 4.7,
"position": [
-3296,
14592
],
"id": "4ef6020e-9500-4953-be0a-7ce5824eeac5",
"name": "GSheet Save Session",
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"documentId": {
"__rl": true,
"value": "1lBLT-m-s8j8RI-BVPFd2rffP9ftf0tQG3t9yrHmPgSU",
"mode": "list",
"cachedResultName": "Copy of NewCSI403",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1lBLT-m-s8j8RI-BVPFd2rffP9ftf0tQG3t9yrHmPgSU/edit?usp=drivesdk"
},
"sheetName": {
"__rl": true,
"value": 615510512,
"mode": "list",
"cachedResultName": "tasks",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1lBLT-m-s8j8RI-BVPFd2rffP9ftf0tQG3t9yrHmPgSU/edit#gid=615510512"
},
"filtersUI": {
"values": [
{
"lookupColumn": "user_id",
"lookupValue": "={{$json.user_id}}"
},
{
"lookupColumn": "deadline_date",
"lookupValue": "={{$json.deadline_date}}"
},
{
"lookupColumn": "status",
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.
googleSheetsOAuth2Api
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Nexus_v6(ล่าสุดจริงๆ)ล่าสุดไกไก. Uses googleSheets, httpRequest. Webhook trigger; 41 nodes.
Source: https://github.com/RelaxTimee/CSI403_Nexus/blob/bae95d5940263c9c16b26d6ab490528ce25b4f93/workflow.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.
[SANTOBET] FLUXO TODO - BACKUP. Uses googleSheets, httpRequest, googleSheetsTrigger. Webhook trigger; 57 nodes.
FLUXO DISPARO DATA E HORA. Uses itemLists, googleSheets, httpRequest. Webhook trigger; 48 nodes.
This workflow allows you to accept online payments via YooKassa and log both orders and transactions in Google Sheets — all without writing a single line of code. It supports full payment flow: produc
Transform your n8n instance management with this advanced automation system featuring artificial intelligence-driven workflow selection. This template provides comprehensive maintenance operations wit
Nexus_Final. Uses googleSheets, httpRequest. Webhook trigger; 41 nodes.