พลังที่แท้จริงเกิดขึ้นเมื่อเรานำ Telegram Bot มาเชื่อมกับ Google Sheet เช่น ให้ผู้ใช้พิมพ์บันทึกข้อมูลลง Sheet ผ่านแชท หรือสอบถามข้อมูลจาก Sheet ได้ทันที บทความนี้จะสอนทำระบบนี้ทีละขั้น ═══════════════════════════════════════ 📌 1. ภาพรวมระบบ ═══════════════════════════════════════ เราจะสร้างบอทที่: • รับข้อความจากผู้ใช้ (ผ่าน Webhook / doPost) • บันทึกข้อความลง Google Sheet • ดึงข้อมูลจาก Sheet มาตอบกลับได้ องค์ประกอบ: • Telegram Bot → ช่องทางคุยกับผู้ใช้ • Google Apps Script → ตัวประมวลผล (doPost) • Google Sheet → ฐานข้อมูล *** ต้องตั้ง Webhook ให้ชี้มาที่ URL ของ GAS Web App ก่อน (ดูบทความ Webhook) *** ═══════════════════════════════════════ 📥 2. บันทึกข้อความที่ผู้ใช้ส่งลง Sheet ═══════════════════════════════════════ ```javascript function doPost(e) { var update = JSON.parse(e.postData.contents); var chatId = update.message.chat.id; var name = update.message.from.first_name; var text = update.message.text; // บันทึกลง Sheet var sheet = SpreadsheetApp.openById("SHEET_ID").getSheetByName("logs"); sheet.appendRow([new Date(), chatId, name, text]); // ตอบกลับยืนยัน sendTelegram(chatId, "บันทึกข้อความของคุณแล้ว ✅"); return ContentService.createTextOutput("ok"); } function sendTelegram(chatId, text) { var token = "วาง_BOT_TOKEN"; var url = "https://api.telegram.org/bot" + token + "/sendMessage"; UrlFetchApp.fetch(url, { "method": "post", "payload": { "chat_id": chatId, "text": text } }); } ``` เตรียม Sheet: สร้างชีตชื่อ "logs" หัวคอลัมน์ = เวลา, chatId, ชื่อ, ข้อความ ═══════════════════════════════════════ 📤 3. ดึงข้อมูลจาก Sheet มาตอบกลับ ═══════════════════════════════════════ ตัวอย่าง: ผู้ใช้พิมพ์ /count บอทตอบจำนวนแถวข้อมูลใน Sheet ```javascript function doPost(e) { var update = JSON.parse(e.postData.contents); var chatId = update.message.chat.id; var text = update.message.text; var sheet = SpreadsheetApp.openById("SHEET_ID").getSheetByName("logs"); if (text == "/count") { var count = sheet.getLastRow() - 1; // ลบแถวหัวตาราง sendTelegram(chatId, "มีข้อมูลทั้งหมด " + count + " รายการ"); } else if (text == "/last") { // ดึงข้อมูลแถวล่าสุด var last = sheet.getLastRow(); var row = sheet.getRange(last, 1, 1, 4).getValues()[0]; sendTelegram(chatId, "ล่าสุด: " + row[2] + " พิมพ์ว่า " + row[3]); } return ContentService.createTextOutput("ok"); } ``` ═══════════════════════════════════════ 🔍 4. ค้นหาข้อมูลใน Sheet ตามคำค้น ═══════════════════════════════════════ ตัวอย่าง: ผู้ใช้พิมพ์ "ค้นหา สมชาย" บอทหาชื่อใน Sheet ```javascript function searchSheet(chatId, keyword) { var sheet = SpreadsheetApp.openById("SHEET_ID").getSheetByName("logs"); var data = sheet.getDataRange().getValues(); var results = []; for (var i = 1; i < data.length; i++) { // ค้นในคอลัมน์ชื่อ (index 2) if (String(data[i][2]).indexOf(keyword) !== -1) { results.push(data[i][2] + ": " + data[i][3]); } } var reply = results.length > 0 ? "พบ " + results.length + " รายการ:\n" + results.join("\n") : "ไม่พบข้อมูล"; sendTelegram(chatId, reply); } ``` ═══════════════════════════════════════ 📊 5. ส่งแจ้งเตือนจาก Sheet เข้ากลุ่ม (สรุปรายวัน) ═══════════════════════════════════════ ตั้ง Trigger ให้รันตามเวลา แล้วสรุปข้อมูลจาก Sheet ส่งเข้ากลุ่ม ```javascript function dailyReport() { var sheet = SpreadsheetApp.openById("SHEET_ID").getSheetByName("logs"); var count = sheet.getLastRow() - 1; var groupChatId = "-1001234567890"; // chat id ของกลุ่ม (ติดลบ) sendTelegram(groupChatId, "📊 สรุปวันนี้: มีข้อความ " + count + " รายการ"); } ``` วิธีตั้งให้รันอัตโนมัติ: ในหน้า Apps Script ไปที่ Triggers (⏰) → Add Trigger → เลือกฟังก์ชัน dailyReport → ตั้งเวลา (เช่น ทุกวัน 18:00) ═══════════════════════════════════════ ✅ 6. สรุป ═══════════════════════════════════════ • เชื่อม Telegram + GAS + Sheet = ระบบบันทึก/สอบถามข้อมูลผ่านแชท • doPost รับข้อความ → appendRow บันทึกลง Sheet • อ่าน Sheet ด้วย getValues / getRange แล้วตอบกลับ • แยกทำงานตามคำสั่ง (/count, /last, ค้นหา) • ใช้ Trigger ส่งรายงานอัตโนมัติตามเวลา จำไว้: Telegram + Sheet = สร้างระบบจัดการข้อมูลผ่านแชทได้ฟรี ไม่ต้องมีเซิร์ฟเวอร์ 🚀