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": "AGA Complaint Agent (LINE)",
"nodes": [
{
"parameters": {
"content": "## \u0e23\u0e30\u0e1a\u0e1a 1 \u00b7 \u0e15\u0e2d\u0e1a\u0e01\u0e25\u0e31\u0e1a\u0e2d\u0e31\u0e15\u0e42\u0e19\u0e21\u0e31\u0e15\u0e34\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e21\u0e35\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e40\u0e02\u0e49\u0e32\u0e01\u0e25\u0e38\u0e48\u0e21 LINE\n\u0e23\u0e31\u0e1a\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21 \u2192 \u0e41\u0e22\u0e01\u0e1b\u0e23\u0e30\u0e40\u0e20\u0e17 \u2192 AI \u0e27\u0e34\u0e40\u0e04\u0e23\u0e32\u0e30\u0e2b\u0e4c / \u0e1b\u0e34\u0e14\u0e07\u0e32\u0e19 / \u0e41\u0e19\u0e1a\u0e23\u0e39\u0e1b \u2192 \u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01 Google Sheet \u2192 \u0e15\u0e2d\u0e1a\u0e01\u0e25\u0e31\u0e1a\u0e43\u0e19\u0e01\u0e25\u0e38\u0e48\u0e21",
"height": 620,
"width": 1280,
"color": 4
},
"id": "sticky_system1",
"name": "\u0e23\u0e30\u0e1a\u0e1a 1",
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
-120,
-120
]
},
{
"parameters": {
"content": "## \u0e23\u0e30\u0e1a\u0e1a 2 \u00b7 \u0e41\u0e08\u0e49\u0e07\u0e40\u0e15\u0e37\u0e2d\u0e19\u0e07\u0e32\u0e19\u0e04\u0e49\u0e32\u0e07\u0e2d\u0e31\u0e15\u0e42\u0e19\u0e21\u0e31\u0e15\u0e34\u0e15\u0e32\u0e21\u0e40\u0e27\u0e25\u0e32\n\u0e15\u0e31\u0e49\u0e07\u0e40\u0e27\u0e25\u0e32 08:30 / 12:00 / 17:30 \u2192 \u0e2d\u0e48\u0e32\u0e19\u0e07\u0e32\u0e19\u0e04\u0e49\u0e32\u0e07\u0e08\u0e32\u0e01 Google Sheet \u2192 Push \u0e41\u0e08\u0e49\u0e07\u0e40\u0e15\u0e37\u0e2d\u0e19\u0e40\u0e02\u0e49\u0e32\u0e01\u0e25\u0e38\u0e48\u0e21",
"height": 260,
"width": 900,
"color": 3
},
"id": "sticky_system2",
"name": "\u0e23\u0e30\u0e1a\u0e1a 2",
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
-120,
600
]
},
{
"parameters": {
"httpMethod": "POST",
"path": "line-webhook",
"responseMode": "onReceived",
"options": {}
},
"id": "node_webhook",
"name": "\u0e01\u0e25\u0e38\u0e48\u0e21 LINE (Webhook)",
"type": "n8n-nodes-base.webhook",
"typeVersion": 2,
"position": [
0,
220
]
},
{
"parameters": {
"rules": {
"values": [
{
"conditions": {
"options": {
"caseSensitive": false,
"typeValidation": "loose"
},
"conditions": [
{
"leftValue": "={{ $json.body.events[0].message.type }}",
"rightValue": "image",
"operator": {
"type": "string",
"operation": "equals"
}
}
],
"combinator": "and"
},
"outputKey": "\u0e23\u0e39\u0e1b\u0e20\u0e32\u0e1e"
},
{
"conditions": {
"options": {
"caseSensitive": false,
"typeValidation": "loose"
},
"conditions": [
{
"leftValue": "={{ $json.body.events[0].message.text }}",
"rightValue": "\u0e1b\u0e34\u0e14\u0e07\u0e32\u0e19|\u0e08\u0e1a\u0e07\u0e32\u0e19|\u0e40\u0e04\u0e25\u0e35\u0e22\u0e23\u0e4c|\u0e40\u0e2a\u0e23\u0e47\u0e08",
"operator": {
"type": "string",
"operation": "regex"
}
}
],
"combinator": "and"
},
"outputKey": "\u0e1b\u0e34\u0e14\u0e07\u0e32\u0e19 Wxxx"
},
{
"conditions": {
"options": {
"caseSensitive": false,
"typeValidation": "loose"
},
"conditions": [
{
"leftValue": "={{ $json.body.events[0].message.text }}",
"rightValue": "",
"operator": {
"type": "string",
"operation": "exists"
}
}
],
"combinator": "and"
},
"outputKey": "\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e17\u0e31\u0e48\u0e27\u0e44\u0e1b"
}
]
},
"options": {}
},
"id": "node_switch",
"name": "\u0e41\u0e22\u0e01\u0e1b\u0e23\u0e30\u0e40\u0e20\u0e17\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21",
"type": "n8n-nodes-base.switch",
"typeVersion": 3,
"position": [
280,
220
]
},
{
"parameters": {
"method": "POST",
"url": "https://generativelanguage.googleapis.com/v1beta/models/gemini-3.5-flash:generateContent",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "x-goog-api-key",
"value": "={{ $env.GEMINI_API_KEY }}"
}
]
},
"sendBody": true,
"specifyBody": "json",
"jsonBody": "={\n \"contents\": [{\n \"parts\": [{ \"text\": \"\u0e27\u0e34\u0e40\u0e04\u0e23\u0e32\u0e30\u0e2b\u0e4c\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e41\u0e08\u0e49\u0e07\u0e1b\u0e31\u0e0d\u0e2b\u0e32\u0e41\u0e21\u0e25\u0e07 \u0e41\u0e25\u0e49\u0e27\u0e15\u0e2d\u0e1a\u0e40\u0e1b\u0e47\u0e19 JSON: pest_type, location, floor, severity, is_complaint. \u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21: \" }]\n }]\n}",
"options": {}
},
"id": "node_gemini",
"name": "Gemini AI \u0e27\u0e34\u0e40\u0e04\u0e23\u0e32\u0e30\u0e2b\u0e4c",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
560,
40
]
},
{
"parameters": {
"operation": "append",
"documentId": {
"__rl": true,
"value": "YOUR_GOOGLE_SHEET_ID",
"mode": "id"
},
"sheetName": {
"__rl": true,
"value": "Complaints",
"mode": "name"
},
"options": {}
},
"id": "node_sheet_append",
"name": "\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e07\u0e32\u0e19\u0e43\u0e2b\u0e21\u0e48 (Sheet)",
"type": "n8n-nodes-base.googleSheets",
"typeVersion": 4.5,
"position": [
840,
40
]
},
{
"parameters": {
"method": "POST",
"url": "https://api.line.me/v2/bot/message/reply",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "Bearer ={{ $env.LINE_CHANNEL_ACCESS_TOKEN }}"
}
]
},
"sendBody": true,
"specifyBody": "json",
"jsonBody": "={\n \"replyToken\": \"{{ $json.replyToken }}\",\n \"messages\": [{ \"type\": \"text\", \"text\": \"\ud83d\udccb \u0e41\u0e08\u0e49\u0e07\u0e40\u0e15\u0e37\u0e2d\u0e19 Work Order \u0e40\u0e1b\u0e34\u0e14\u0e41\u0e25\u0e49\u0e27\" }]\n}",
"options": {}
},
"id": "node_reply_new",
"name": "\u0e15\u0e2d\u0e1a\u0e40\u0e25\u0e02\u0e07\u0e32\u0e19\u0e43\u0e19\u0e01\u0e25\u0e38\u0e48\u0e21",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
1120,
40
]
},
{
"parameters": {
"operation": "update",
"documentId": {
"__rl": true,
"value": "YOUR_GOOGLE_SHEET_ID",
"mode": "id"
},
"sheetName": {
"__rl": true,
"value": "Complaints",
"mode": "name"
},
"options": {}
},
"id": "node_sheet_close",
"name": "\u0e1b\u0e34\u0e14\u0e07\u0e32\u0e19\u0e43\u0e19\u0e23\u0e30\u0e1a\u0e1a (Sheet)",
"type": "n8n-nodes-base.googleSheets",
"typeVersion": 4.5,
"position": [
560,
240
]
},
{
"parameters": {
"method": "POST",
"url": "https://api.line.me/v2/bot/message/reply",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "Bearer ={{ $env.LINE_CHANNEL_ACCESS_TOKEN }}"
}
]
},
"sendBody": true,
"specifyBody": "json",
"jsonBody": "={\n \"replyToken\": \"{{ $json.replyToken }}\",\n \"messages\": [{ \"type\": \"text\", \"text\": \"\u2705 \u0e1b\u0e34\u0e14\u0e07\u0e32\u0e19\u0e41\u0e25\u0e49\u0e27 \u2014 \u0e41\u0e2a\u0e14\u0e07\u0e07\u0e32\u0e19\u0e04\u0e49\u0e32\u0e07\u0e17\u0e35\u0e48\u0e40\u0e2b\u0e25\u0e37\u0e2d\" }]\n}",
"options": {}
},
"id": "node_reply_close",
"name": "\u0e15\u0e2d\u0e1a\u0e07\u0e32\u0e19\u0e04\u0e49\u0e32\u0e07\u0e17\u0e35\u0e48\u0e40\u0e2b\u0e25\u0e37\u0e2d",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
840,
240
]
},
{
"parameters": {
"method": "GET",
"url": "=https://api-data.line.me/v2/bot/message/{{ $json.body.events[0].message.id }}/content",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "Bearer ={{ $env.LINE_CHANNEL_ACCESS_TOKEN }}"
}
]
},
"options": {}
},
"id": "node_photo",
"name": "\u0e41\u0e19\u0e1a\u0e23\u0e39\u0e1b\u0e01\u0e31\u0e1a\u0e07\u0e32\u0e19 (GCS)",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
560,
420
]
},
{
"parameters": {
"rule": {
"interval": [
{
"field": "cronExpression",
"expression": "30 8 * * *"
},
{
"field": "cronExpression",
"expression": "0 12 * * *"
},
{
"field": "cronExpression",
"expression": "30 17 * * *"
}
]
}
},
"id": "node_schedule",
"name": "\u0e15\u0e31\u0e49\u0e07\u0e40\u0e27\u0e25\u0e32 3 \u0e23\u0e2d\u0e1a/\u0e27\u0e31\u0e19",
"type": "n8n-nodes-base.scheduleTrigger",
"typeVersion": 1.2,
"position": [
0,
720
]
},
{
"parameters": {
"operation": "read",
"documentId": {
"__rl": true,
"value": "YOUR_GOOGLE_SHEET_ID",
"mode": "id"
},
"sheetName": {
"__rl": true,
"value": "Complaints",
"mode": "name"
},
"options": {}
},
"id": "node_sheet_read",
"name": "\u0e2d\u0e48\u0e32\u0e19\u0e07\u0e32\u0e19\u0e04\u0e49\u0e32\u0e07 (Sheet)",
"type": "n8n-nodes-base.googleSheets",
"typeVersion": 4.5,
"position": [
280,
720
]
},
{
"parameters": {
"method": "POST",
"url": "https://api.line.me/v2/bot/message/push",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "Bearer ={{ $env.LINE_CHANNEL_ACCESS_TOKEN }}"
}
]
},
"sendBody": true,
"specifyBody": "json",
"jsonBody": "={\n \"to\": \"YOUR_GROUP_ID\",\n \"messages\": [{ \"type\": \"text\", \"text\": \"\ud83d\udd34 \u0e41\u0e08\u0e49\u0e07\u0e40\u0e15\u0e37\u0e2d\u0e19\u0e07\u0e32\u0e19\u0e04\u0e49\u0e32\u0e07\" }]\n}",
"options": {}
},
"id": "node_push",
"name": "\u0e41\u0e08\u0e49\u0e07\u0e40\u0e15\u0e37\u0e2d\u0e19\u0e40\u0e02\u0e49\u0e32\u0e01\u0e25\u0e38\u0e48\u0e21 (Push)",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
560,
720
]
}
],
"connections": {
"\u0e01\u0e25\u0e38\u0e48\u0e21 LINE (Webhook)": {
"main": [
[
{
"node": "\u0e41\u0e22\u0e01\u0e1b\u0e23\u0e30\u0e40\u0e20\u0e17\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21",
"type": "main",
"index": 0
}
]
]
},
"\u0e41\u0e22\u0e01\u0e1b\u0e23\u0e30\u0e40\u0e20\u0e17\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21": {
"main": [
[
{
"node": "\u0e41\u0e19\u0e1a\u0e23\u0e39\u0e1b\u0e01\u0e31\u0e1a\u0e07\u0e32\u0e19 (GCS)",
"type": "main",
"index": 0
}
],
[
{
"node": "\u0e1b\u0e34\u0e14\u0e07\u0e32\u0e19\u0e43\u0e19\u0e23\u0e30\u0e1a\u0e1a (Sheet)",
"type": "main",
"index": 0
}
],
[
{
"node": "Gemini AI \u0e27\u0e34\u0e40\u0e04\u0e23\u0e32\u0e30\u0e2b\u0e4c",
"type": "main",
"index": 0
}
]
]
},
"Gemini AI \u0e27\u0e34\u0e40\u0e04\u0e23\u0e32\u0e30\u0e2b\u0e4c": {
"main": [
[
{
"node": "\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e07\u0e32\u0e19\u0e43\u0e2b\u0e21\u0e48 (Sheet)",
"type": "main",
"index": 0
}
]
]
},
"\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e07\u0e32\u0e19\u0e43\u0e2b\u0e21\u0e48 (Sheet)": {
"main": [
[
{
"node": "\u0e15\u0e2d\u0e1a\u0e40\u0e25\u0e02\u0e07\u0e32\u0e19\u0e43\u0e19\u0e01\u0e25\u0e38\u0e48\u0e21",
"type": "main",
"index": 0
}
]
]
},
"\u0e1b\u0e34\u0e14\u0e07\u0e32\u0e19\u0e43\u0e19\u0e23\u0e30\u0e1a\u0e1a (Sheet)": {
"main": [
[
{
"node": "\u0e15\u0e2d\u0e1a\u0e07\u0e32\u0e19\u0e04\u0e49\u0e32\u0e07\u0e17\u0e35\u0e48\u0e40\u0e2b\u0e25\u0e37\u0e2d",
"type": "main",
"index": 0
}
]
]
},
"\u0e15\u0e31\u0e49\u0e07\u0e40\u0e27\u0e25\u0e32 3 \u0e23\u0e2d\u0e1a/\u0e27\u0e31\u0e19": {
"main": [
[
{
"node": "\u0e2d\u0e48\u0e32\u0e19\u0e07\u0e32\u0e19\u0e04\u0e49\u0e32\u0e07 (Sheet)",
"type": "main",
"index": 0
}
]
]
},
"\u0e2d\u0e48\u0e32\u0e19\u0e07\u0e32\u0e19\u0e04\u0e49\u0e32\u0e07 (Sheet)": {
"main": [
[
{
"node": "\u0e41\u0e08\u0e49\u0e07\u0e40\u0e15\u0e37\u0e2d\u0e19\u0e40\u0e02\u0e49\u0e32\u0e01\u0e25\u0e38\u0e48\u0e21 (Push)",
"type": "main",
"index": 0
}
]
]
}
},
"active": false,
"settings": {
"executionOrder": "v1"
},
"meta": {
"templatecredsSetupCompleted": false,
"description": "\u0e1c\u0e31\u0e07\u0e08\u0e33\u0e25\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e17\u0e33\u0e07\u0e32\u0e19\u0e02\u0e2d\u0e07 AGA Complaint Agent (\u0e23\u0e30\u0e1a\u0e1a\u0e08\u0e23\u0e34\u0e07\u0e40\u0e02\u0e35\u0e22\u0e19\u0e14\u0e49\u0e27\u0e22 Node.js \u0e1a\u0e19 Cloud Run \u2014 \u0e44\u0e1f\u0e25\u0e4c\u0e19\u0e35\u0e49\u0e43\u0e0a\u0e49\u0e40\u0e1e\u0e37\u0e48\u0e2d presentation/\u0e41\u0e2a\u0e14\u0e07\u0e1c\u0e31\u0e07\u0e43\u0e19 n8n)"
}
}
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
AGA Complaint Agent (LINE). Uses httpRequest, googleSheets. Webhook trigger; 13 nodes.
Source: https://github.com/13azukaoab/AGA-Complaint-Agent-LINE/blob/262248c97310502073be9798dc64c9334c55dea6/AGA-Complaint-Agent.n8n.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.
Automate the entire product return process with an intelligent AI-powered agent that navigates return portals on your behalf 🤖. This workflow receives customer return requests, analyzes portal structu
Ecotrustia — WhatsApp AI Agent. Uses httpRequest, googleSheets. Webhook trigger; 13 nodes.
Legal AI Agent for WhatsApp. Uses httpRequest, googleSheets. Webhook trigger; 12 nodes.
Sistema Automação Jurídica - Workflow Principal. Uses googleDrive, httpRequest, googleDocs, googleSheets. Webhook trigger; 11 nodes.
AI Lead Generation & Outreach Agent. Uses httpRequest, googleSheets, gmail. Webhook trigger; 6 nodes.