สร้างแชทบอท LINE OA ฟรีไม่ง้อ Server: จับคู่ความทรงพลังด้วย Google Apps Script

ถ้าคุณกำลังทำธุรกิจหรือเปิดเพจ การมี LINE Official Account (LINE OA) ไว้ตอบลูกค้าคือเรื่องพื้นฐาน แต่พอคนเริ่มทักเยอะขึ้น การตอบมือก็อาจจะไม่ทันใจ ครั้นจะไปเช่า Server เขียนระบบแชทบอทเองก็มีค่าใช้จ่ายจุกจิกตามมา

ทางออกที่นักพัฒนาและเจ้าของธุรกิจหลายคนหลงรักคือการใช้ Google Apps Script (GAS) มาเป็นสมองกลให้กับ LINE OA ของเราครับ สถาปัตยกรรมนี้เรียกได้ว่าเป็น “ของดีและฟรี” ที่ทำได้ตั้งแต่บอทตอบคำถามง่ายๆ ไปจนถึงระบบจองคิวที่เชื่อมกับ Google Calendar

💡 สองตัวนี้ทำงานร่วมกันอย่างไร?

หลักการทำงานของระบบนี้คือการส่งผ่านข้อมูลหากัน (Webhook) แบบเรียลไทม์ครับ:

  1. User (ผู้ใช้งาน): พิมพ์ข้อความทักเข้ามาใน LINE OA
  2. LINE Platform: รับข้อความ แล้วส่งข้อมูลนั้น (ผ่าน Webhook) วิ่งไปหา URL ของ Google Apps Script
  3. Google Apps Script (สมองกล): รับข้อความมาประมวลผล เช่น เช็กคีย์เวิร์ด, บันทึกข้อมูลลง Google Sheets หรือดึงข้อมูลสินค้า
  4. ตอบกลับ: GAS ส่งข้อความกลับไปหา LINE Platform เพื่อให้แสดงบนหน้าจอของผู้ใช้งาน

🛠️ วิธีการตั้งค่าเบื้องต้น (สเตปบายสเตป)

การเชื่อมต่อสองระบบนี้เข้าด้วยกัน ต้องอาศัยการตั้งค่าทั้งฝั่ง LINE และ Google ลองทำตามลำดับนี้ได้เลยครับ (ลำดับสำคัญมาก ข้ามขั้นตอนอาจทำให้ระบบไม่ทำงาน)

1เปิดใช้งาน LINE Messaging API:ฝั่ง LINE Developers

เข้าไปที่เว็บ LINE Developers (developers.line.biz) ล็อกอินและสร้าง Provider จากนั้นสร้าง Channel ประเภท Messaging API เมื่อสร้างเสร็จ ให้ไปที่แท็บ Messaging API แล้วกดออก Channel Access Token (long-lived) เก็บค่านี้ไว้ให้ดีครับ เราต้องใช้ในโค้ด

2สร้าง API รับข้อมูลด้วย Google Apps Script:ฝั่ง Google Workspace

เปิด Google Sheets เปล่าขึ้นมา ไปที่ Extensions > Apps Script ลบโค้ดเดิมทิ้งแล้วใส่ฟังก์ชัน doPost(e) ซึ่งเป็นฟังก์ชันมาตรฐานที่ไว้รอรับข้อมูล Webhook จาก LINE

3Deploy เพื่อเอา Web App URL:ฝั่ง Google Workspace

เมื่อเขียนโค้ดเสร็จ (ดูตัวอย่างโค้ดด้านล่าง) ให้กดปุ่ม Deploy มุมขวาบน เลือก New deployment

ตั้งค่าประเภทเป็น Web app และเปลี่ยน Who has access เป็น Anyone เพื่อให้ LINE ส่งข้อมูลเข้ามาได้ คัดลอก URL ที่ได้ไว้

4นำ URL ไปเสียบใน LINE Webhook:ฝั่ง LINE Developers

กลับไปที่หน้าตั้งค่า Channel ใน LINE Developers นำ URL ที่คัดลอกมาไปวางในช่อง Webhook URL กด Save แล้วอย่าลืมเปิดสวิตช์ Use webhook ให้ทำงานด้วย

💻 ตัวอย่างโค้ด: บอทสะท้อนข้อความ (Echo Bot)

เพื่อให้เห็นภาพ นี่คือโครงสร้างโค้ดพื้นฐานบน GAS ที่จะทำให้บอท “ตอบกลับข้อความเดิม” ที่ผู้ใช้พิมพ์มาครับ (อย่าลืมเปลี่ยน YOUR_CHANNEL_ACCESS_TOKEN เป็นของคุณเอง)

JavaScript

const CHANNEL_ACCESS_TOKEN = 'YOUR_CHANNEL_ACCESS_TOKEN_จาก_LINE';

function doPost(e) {
  // 1. รับข้อมูลที่ LINE ส่งมา
  const event = JSON.parse(e.postData.contents).events[0];
  
  // เช็กว่าเป็นการส่งข้อความมาใช่ไหม
  if (event.type === 'message' && event.message.type === 'text') {
    const userMessage = event.message.text;
    const replyToken = event.replyToken;
    
    // 2. เตรียมข้อความตอบกลับ
    replyMessage(replyToken, 'คุณพิมพ์ว่า: ' + userMessage);
  }
  
  // ส่งสถานะ 200 กลับไปบอก LINE ว่ารับทราบแล้ว
  return ContentService.createTextOutput('OK');
}

// ฟังก์ชันสำหรับส่งข้อความกลับไปหา LINE API
function replyMessage(replyToken, text) {
  const url = 'https://api.line.me/v2/bot/message/reply';
  const payload = {
    replyToken: replyToken,
    messages: [{ type: 'text', text: text }]
  };
  
  const options = {
    method: 'post',
    headers: {
      'Content-Type': 'application/json',
      'Authorization': 'Bearer ' + CHANNEL_ACCESS_TOKEN
    },
    payload: JSON.stringify(payload)
  };
  
  UrlFetchApp.fetch(url, options);
}

🎯 ไอเดียต่อยอด (Use Cases)

เมื่อคุณเชื่อมต่อท่อนี้สำเร็จแล้ว คุณสามารถประยุกต์ทำอะไรได้อีกเยอะมาก เช่น:

  • ระบบบันทึกค่าใช้จ่าย/รายรับ: พิมพ์ตัวเลขใน LINE ให้บอทเอาไปหยอดลง Google Sheets อัตโนมัติ
  • ระบบเช็กสถานะพัสดุ/สินค้า: พิมพ์รหัสสมาชิก เพื่อให้ GAS วิ่งไปหาข้อมูลใน Sheets แล้วตอบกลับ
  • AI Chatbot: ให้ GAS รับข้อความ แล้วส่งไปหา OpenAI (ChatGPT API) เพื่อช่วยคิดคำตอบเนียนๆ เหมือนคนตอบ แล้วค่อยส่งกลับมาที่ LINE

การใช้ GAS เป็น Backend ให้ LINE OA ถือเป็นท่าไม้ตายที่คุ้มค่าและดูแลรักษาง่ายที่สุดท่าหนึ่งสำหรับโปรเจกต์ขนาดเล็กถึงกลางครับ

Scroll to Top