AutomationFlowsData & Sheets › Nexus_v6(ล่าสุดจริงๆ)ล่าสุดไกไก

Nexus_v6(ล่าสุดจริงๆ)ล่าสุดไกไก

Nexus_v6(ล่าสุดจริงๆ)ล่าสุดไกไก. Uses googleSheets, httpRequest. Webhook trigger; 41 nodes.

Webhook trigger★★★★★ complexity41 nodesGoogle SheetsHTTP Request
Data & Sheets Trigger: Webhook Nodes: 41 Complexity: ★★★★★ Added:

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 →

Download .json
{
  "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.

Pro

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 →

More Data & Sheets workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

Data & Sheets

[SANTOBET] FLUXO TODO - BACKUP. Uses googleSheets, httpRequest, googleSheetsTrigger. Webhook trigger; 57 nodes.

Google Sheets, HTTP Request, Google Sheets Trigger
Data & Sheets

FLUXO DISPARO DATA E HORA. Uses itemLists, googleSheets, httpRequest. Webhook trigger; 48 nodes.

Item Lists, Google Sheets, HTTP Request
Data & Sheets

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

Google Sheets, HTTP Request
Data & Sheets

Transform your n8n instance management with this advanced automation system featuring artificial intelligence-driven workflow selection. This template provides comprehensive maintenance operations wit

n8n, HTTP Request, Google Sheets +1
Data & Sheets

Nexus_Final. Uses googleSheets, httpRequest. Webhook trigger; 41 nodes.

Google Sheets, HTTP Request