ROOM64 / KNOWLEDGE / N8N

6 ตัวอย่าง use case สำหรับ n8n

ตัวอย่างที่ Room64 เรียบเรียงเพิ่มเติม พร้อมสิ่งที่ต้องเตรียม ลำดับ node วิธีตั้งค่า ข้อมูลทดสอบ และผลลัพธ์ที่ควรได้

ตัวอย่างในหน้านี้เป็นแนวทางประกอบการเรียนรู้ อ้างอิงความสามารถของ node ในเอกสารทางการ ยังไม่ได้เชื่อมต่อบัญชีหรือรันกับระบบธุรกิจจริงของคุณ ชื่อ operation และเมนูอาจต่างกันตามเวอร์ชัน

1. รับลูกค้าจากฟอร์มเข้าชีต

เหมาะกับ: ทีมขายที่ต้องคัดลอกข้อมูลผู้สนใจจากฟอร์มลง Google Sheets และส่งข้อความให้ทีม

n8n Form Trigger → Edit Fields → Google Sheets → Slack
Form Trigger รับข้อมูลผู้สนใจ ส่งให้ Edit Fields จัดฟิลด์ แล้วเพิ่มแถวใน Google Sheets และแจ้งทีมผ่าน Slack
ภาพแนวคิดโดย Room64: รับข้อมูลฟอร์ม จัดฟิลด์ เพิ่มแถวในชีต แล้วแจ้งทีมผ่าน Slack

เตรียม: ชีตที่มีหัวคอลัมน์ name, email, company, submittedAt; Google credentials ที่เข้าถึงชีตได้; Slack credentials และสิทธิ์ส่งข้อความใน channel ที่เลือก

  1. เพิ่ม n8n Form Trigger สร้าง Field Name เป็น name, email และ company ตั้ง email เป็นชนิด Email และเปิด Required
  2. เพิ่ม Edit Fields (Set) เลือก Manual Mapping แล้วกำหนด name = {{ $json.name }}, email = {{ $json.email.toLowerCase().trim() }} และ submittedAt = {{ $now.toISO() }} เก็บ company ไว้ด้วย
  3. เพิ่ม Google Sheets เลือก Sheet Within Document → Append Row เลือก document และ sheet แล้ว map ทั้ง 4 ฟิลด์กับหัวคอลัมน์
  4. เพิ่ม Slack เลือกส่งข้อความไป channel ของทีม ใช้ผลลัพธ์จากชีต หรือเลือกข้อมูลจาก Edit Fields โดยตรงใน expression editor
  5. กด Execute Workflow แล้วกรอกข้อมูลที่ Test URL เมื่อตรวจครบแล้วจึง Publish และแชร์ Production URL

ทดสอบ: ส่ง name = “คุณเอ”, email = “test@example.com”, company = “Example” ควรเพิ่ม 1 แถวและแจ้ง Slack 1 ข้อความ ลองส่งโดยเว้น email ว่างเพื่อยืนยันว่าแบบฟอร์มไม่รับข้อมูลที่ขาด

ต่อยอด: ถ้าต้องการเก็บลูกค้าหนึ่งรายต่อ email ให้พิจารณา Append or Update Row และเลือก email เป็นคอลัมน์จับคู่ การกดส่งซ้ำอาจยังส่ง Slack ซ้ำได้ จึงต้องออกแบบเงื่อนไขแจ้งเตือนแยกต่างหาก

อ้างอิง: n8n Form · Google Sheets · Google OAuth2

2. ส่งรายงานทุกเช้า

เหมาะกับ: รายงานสถานะคำสั่งซื้อหรืองานค้างที่ต้องส่งให้ทีมเวลาเดิมทุกวัน

Schedule Trigger → HTTP Request → Split Out → Aggregate → Gmail
Schedule เริ่มเวลา 09:00 เรียก HTTP Request แยกรายการด้วย Split Out รวมเป็นรายงานด้วย Aggregate แล้วส่งอีเมลผ่าน Gmail
ภาพแนวคิดโดย Room64: เรียกรายการตามเวลา แยกและรวมข้อมูล ก่อนส่งรายงานเป็นอีเมลเดียว

เตรียม: API สำหรับอ่านรายงานที่คุณมีสิทธิ์ใช้งานและ Gmail credentials ตัวอย่างสมมติว่า API ตอบ { "orders": [{ "id": "A001", "total": 1200 }, { "id": "A002", "total": 500 }] }

  1. ใน Workflow Settings ตั้ง timezone เป็น Asia/Bangkok เพิ่ม Schedule Trigger ให้รันทุกวันเวลา 09:00
  2. เพิ่ม HTTP Request ใช้ GET ใส่ endpoint ของระบบคุณ เลือก credentials และรูปแบบผลลัพธ์ JSON ทดสอบให้เห็นฟิลด์ orders
  3. เพิ่ม Split Out เลือก Fields To Split Out เป็น orders เพื่อแยกแต่ละ order เป็น item
  4. เพิ่ม Aggregate เลือก All Item Data และตั้งฟิลด์ผลลัพธ์เป็น orders เพื่อรวมกลับเป็นรายงานชุดเดียว
  5. เพิ่ม Gmail เลือกส่งอีเมลชนิดข้อความ ใส่ผู้รับและหัวเรื่อง สร้าง body จาก expression ด้านล่าง จากนั้นทดสอบด้วยการรันด้วยมือก่อน Publish
{{ $json.orders.map(order => order.id + ": " + order.total + " บาท").join("
") }}

ผลลัพธ์ที่ควรได้: อีเมลหนึ่งฉบับแสดง A001: 1200 บาท และ A002: 500 บาท ตรวจด้วยว่า API คืนรายการว่างแล้ว flow หยุดหรือยังส่งรายงานตามที่ต้องการ หากต้องส่ง “ไม่มีรายการ” ให้แยกเงื่อนไขก่อน Split Out

ข้อควรตรวจ: timezone ของตัวกรองวันที่ใน API ต้องสอดคล้องกับเวลารายงาน หาก API แบ่งหน้าให้ตั้ง pagination ใน HTTP Request ให้ครบก่อนสรุป

อ้างอิง: Schedule Trigger · HTTP Request · Aggregate

3. รับคำสั่งผ่าน Webhook และตอบกลับเป็น JSON

เหมาะกับ: ระบบภายนอกส่งข้อมูลคำสั่งซื้อเข้ามาให้ n8n ตรวจรูปแบบก่อนทำขั้นตอนถัดไป

Webhook → If → Respond to Webhook (200 / 400)
คำขอ POST ที่ยืนยันตัวตนแล้วเข้า Webhook และ If แยกกิ่ง true ไปตอบ JSON สถานะ 200 และกิ่ง false ไปตอบสถานะ 400
ภาพแนวคิดโดย Room64: ตรวจ orderId แล้วแยกตอบ JSON ด้วยสถานะ 200 หรือ 400

เตรียม: HTTP client เช่น curl หรือ Postman และ Header Auth credential สำหรับ endpoint

  1. เพิ่ม Webhook ตั้ง HTTP Method = POST, Path = order-intake และ Authentication = Header Auth เก็บชื่อ header และค่าลับใน credential
  2. ตั้ง Respond เป็น Using 'Respond to Webhook' Node แล้วเพิ่ม If ตรวจ {{ $json.body.orderId }} ว่าไม่ว่าง
  3. ต่อกิ่ง true ไป Respond to Webhook เลือก Respond With = JSON, Response Code = 200 และ body ตามตัวอย่างด้านล่าง ส่วนกิ่ง false ใช้ Respond to Webhook อีกตัว คืน code 400 และ { "ok": false, "error": "orderId is required" }
  4. กด Listen for Test Event ใน Webhook แล้วส่ง JSON ไปที่ Test URL พร้อม header ที่กำหนด หลังทดสอบผ่านจึง Publish และเปลี่ยนผู้เรียกให้ใช้ Production URL
// Expression สำหรับ Response Body ของกิ่ง true
{{ { ok: true, orderId: $json.body.orderId } }}

ทดสอบ: ส่ง { "orderId": "A001" } ควรได้ 200 และ orderId เดิม ส่ง {} ควรได้ 400 ส่งโดยไม่มี header ยืนยันตัวตนต้องถูกปฏิเสธ

ตัวอย่างนี้เพียงตรวจและตอบรับข้อมูล หากต่อเข้าระบบคำสั่งซื้อจริง ต้องตรวจข้อมูลที่จำเป็นเพิ่มเติมและกันการส่งซ้ำด้วย orderId ก่อนบันทึก

อ้างอิง: Webhook · Respond to Webhook

4. เรียก API ทีละชุดและเว้นช่วงระหว่างคำขอ

เหมาะกับ: ส่งข้อมูลหลายรายการไปบริการที่จำกัดจำนวน request ต่อช่วงเวลา

Manual Trigger → Code → Loop Over Items → HTTP Request → Wait → กลับเข้า Loop
Loop Over Items ส่งทีละรายการไป HTTP Request และ Wait รอ 1 วินาทีก่อนวนกลับ โดยมีทาง done แยกไปจบเมื่อครบทุกรายการ
ภาพแนวคิดโดย Room64: ประมวลผลทีละรายการ รอ 1 วินาที แล้ววนกลับ และออกทาง done เมื่อครบทุกรายการ
  1. สร้างข้อมูลทดสอบ 3 items ใน Code โหมด Run Once for All Items ตามตัวอย่างด้านล่าง
  2. เพิ่ม Loop Over Items ตั้ง Batch Size = 1 ต่อเอาต์พุต loop ไป HTTP Request
  3. เลือก endpoint ทดสอบที่คุณควบคุม ตั้ง request ให้ส่งฟิลด์ id จาก {{ $json.id }} และเลือก credentials ตามระบบนั้น
  4. ต่อ HTTP Request ไป Wait เลือก After Time Interval และเว้น 1 วินาทีสำหรับการทดลอง จากนั้นต่อ Wait กลับเข้าด้าน input ของ Loop Over Items
  5. ใช้เอาต์พุต done สำหรับขั้นตอนสรุปเมื่อครบทุก item ตั้ง Retry On Fail ของ HTTP Request ตามข้อจำกัดบริการ และไม่ถือว่าเวลาหน่วง 1 วินาทีเหมาะกับทุก API
return [1, 2, 3].map(id => ({ json: { id } }));

ทดสอบ: endpoint ได้รับ id 1, 2 และ 3 อย่างละหนึ่งครั้ง มีช่วงรอระหว่างรอบ และทาง done ทำงานหลังครบทั้ง 3 items หากได้รับ 429 ให้ตรวจโควตาและ Retry-After ตามเอกสารบริการ

node ของ n8n จำนวนมากประมวลผลหลาย items ให้อยู่แล้ว ใช้ Loop Over Items เมื่อต้องควบคุมจำนวนต่อรอบหรือจังหวะเวลาโดยเฉพาะ

อ้างอิง: Loop Over Items · Handle rate limits

5. ผู้ช่วย AI ค้นข้อมูลจากเครื่องมือที่กำหนด

เหมาะกับ: ผู้ช่วยตอบคำถามที่ต้องอ่านข้อมูลจาก API ภายในที่อนุญาตให้อ่าน เช่นสถานะสินค้า

Chat Trigger → AI Agent + Chat Model + HTTP Request Tool
Chat Trigger ส่งคำถามให้ AI Agent ที่ต่อกับ Chat Model และ HTTP Request Tool เพื่ออ่านข้อมูลสินค้าจาก API สิทธิ์อ่านอย่างเดียวก่อนตอบ
ภาพแนวคิดโดย Room64: Agent ใช้ Chat Model และเครื่องมืออ่าน API เพื่อสร้างคำตอบจากข้อมูลจริง

เตรียม: บัญชีผู้ให้บริการโมเดลและ API key, endpoint ค้นข้อมูลทดสอบ และขอบเขตข้อมูลที่อนุญาตให้ผู้ใช้เห็น การเรียกโมเดลอาจมีค่าใช้จ่ายตามผู้ให้บริการ

  1. เพิ่ม Chat Trigger แล้วต่อเข้า AI Agent ให้รับ prompt จากข้อความ chat
  2. เชื่อม Chat Model sub-node ที่รองรับ เช่น OpenAI Chat Model พร้อม credential ของคุณ
  3. ต่อ HTTP Request Tool เข้าช่อง Tool ของ Agent ตั้ง GET ไปยัง endpoint ที่กำหนด ใช้ credentials สิทธิ์อ่านอย่างเดียว และอธิบายหน้าที่ของ tool ให้ชัด
  4. กำหนด System Message เช่น “ตอบเป็นภาษาไทย ใช้ข้อมูลจากเครื่องมือเท่านั้น หากไม่พบข้อมูลให้บอกว่าไม่พบ ห้ามเดาสถานะสินค้า”
  5. เริ่มทดสอบด้วยข้อมูลจำลองและ Chat ภายใน editor ตรวจ execution ว่า Agent เรียก tool และอ้างผลลัพธ์ที่ได้รับจริง ก่อนเปิดให้ผู้ใช้เข้าถึง

ทดสอบ: ถามรหัสสินค้าที่มีอยู่ รหัสที่ไม่มี และคำถามนอกขอบเขต ตรวจทั้งคำตอบและผลลัพธ์จาก tool ไม่ตรวจเฉพาะว่าประโยคอ่านลื่นหรือไม่

AI Agent ต้องเชื่อมอย่างน้อยหนึ่ง tool หากต้องการบทสนทนาต่อเนื่องให้เพิ่ม memory และตรวจ session key ไม่ให้ประวัติข้ามผู้ใช้ การกำหนด prompt ไม่ได้ทดแทนการควบคุมสิทธิ์ที่ API

อ้างอิง: AI Agent · Chat Trigger

6. แจ้งทีมเมื่อ workflow ล้มเหลว

เหมาะกับ: งานอัตโนมัติที่ต้องมีคนรับรู้เมื่อ API หมดสิทธิ์เชื่อมต่อหรือขั้นตอนทำงานผิดพลาด

Error Trigger → Edit Fields → Slack
workflow หลักที่รันตามเวลาล้มเหลว แล้วเรียก Error Trigger ใน Error Handler แยกต่างหากเพื่อจัดข้อความด้วย Edit Fields และส่งแจ้งเตือน Slack
ภาพแนวคิดโดย Room64: workflow หลักล้มเหลวแล้วเรียก Error Handler เพื่อแจ้งทีมผ่าน Slack
  1. สร้าง workflow ใหม่ชื่อ Error Handler ให้ Error Trigger เป็น node แรก แล้วต่อ Slack สำหรับส่งแจ้งเตือน
  2. เลือกข้อความแจ้งจากข้อมูล Error Trigger เช่นชื่อ workflow และข้อความผิดพลาด ใช้ expression ที่รองรับ error จาก trigger ตามตัวอย่าง
  3. บันทึก Error Handler แล้วเปิด Settings ของ workflow หลัก เลือก Error workflow เป็น Error Handler และบันทึก
  4. ทดสอบกับ workflow ทดลองที่รันอัตโนมัติและจงใจล้มเหลว เช่นใส่ Stop And Error หลัง Schedule Trigger แล้วตรวจว่า Slack ได้ข้อความ
{{ $json.workflow.name + ": " + ($json.execution?.error?.message ?? $json.trigger?.error?.message ?? "Unknown error") }}

ผลลัพธ์ที่ควรได้: Error Handler รันเมื่อ workflow หลักที่เชื่อมไว้ล้มเหลวจากการรันอัตโนมัติ การกด Execute Workflow ด้วยมือไม่ทำให้ Error Trigger ทำงาน และ Error Handler เองไม่จำเป็นต้อง Publish

execution.url อาจไม่มีเมื่อ workflow ล้มเหลวที่ trigger จึงไม่ควรสมมติว่าทุกข้อความจะมีลิงก์ execution และควรส่งเฉพาะรายละเอียดที่ทีมต้องใช้แทนการส่งข้อมูล credential หรือ payload ทั้งก้อน

อ้างอิง: Error Trigger · Stop And Error

อ่านต่อ: ตัวอย่างที่นำไปใช้จริงกับธุรกิจ

ตัวอย่างด้านบนเน้นลำดับ node และการตั้งค่า ส่วนบทความด้านล่างเล่าว่าแต่ละงานเอาไปใช้กับธุรกิจอย่างไร ต้องระวังอะไร และควรให้คนตัดสินใจตรงจุดไหน

ภาพรวมว่าเราวางระบบอัตโนมัติให้ธุรกิจอย่างไร ดูได้ที่ โซลูชัน AI Automation

เอกสารและภาพต้นฉบับ © n8n GmbH · คำแปล คู่มือประกอบ และภาพแนวคิดเพิ่มเติมโดย Room64 · เว็บไซต์นี้ไม่ใช่เอกสารทางการของ n8n · Apache 2.0 พร้อม Commons Clause

มีงานที่อยากให้ Software, AI หรือ Automation ช่วยอยู่ไหม?

เล่า workflow หรือปัญหาที่ทีมกำลังเจอ เราช่วยดูได้ว่าควรใช้ระบบสำเร็จรูป เชื่อมเครื่องมือเดิม หรือพัฒนาเพิ่มเฉพาะส่วนไหน

คุยกับเราทาง LINEhello@room64.net