พลังที่แท้จริงเกิดขึ้นเมื่อเรานำ 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
═══════════════════════════════════════
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
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
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 ส่งเข้ากลุ่ม
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 = สร้างระบบจัดการข้อมูลผ่านแชทได้ฟรี ไม่ต้องมีเซิร์ฟเวอร์ 🚀