กิจกรรมที่ 1 ถามตอบโดยดึงข้อมูลจาก Google Sheets แบบข้อความ
const LINE_TOKEN = 'xxxxx';
function doPost(e) {
const data = JSON.parse(e.postData.contents);
const event = data.events[0];
if (event.type === 'message' && event.message.type === 'text') {
const userText = event.message.text.trim().toLowerCase();
const replyToken = event.replyToken;
if (userText === 'สวัสดี') {
sendMessage(replyToken, { type: 'text', text: 'สวัสดีครับ! 😊' });
} else {
sendMessage(replyToken, { type: 'text', text: findAnswer(userText) });
}
}
}
function sendMessage(replyToken, message) {
const url = 'https://api.line.me/v2/bot/message/reply';
UrlFetchApp.fetch(url, {
method: 'post',
contentType: 'application/json',
headers: { Authorization: `Bearer ${LINE_TOKEN}` },
payload: JSON.stringify({ replyToken, messages: [message] })
});
}
function findAnswer(userQuestion) {
const sheet = SpreadsheetApp.openByUrl("xxxxxx").getSheetByName("xxxxx");
if (!sheet) return "ขออภัย ไม่พบข้อมูล";
const data = sheet.getDataRange().getValues();
if (data.length <= 1) return "ขออภัย ไม่พบข้อมูล";
data.shift(); // Skip headers
for (let row of data) {
const question = String(row[0]).trim().toLowerCase();
const answer = String(row[1]).trim();
const keywords = row[2] ? String(row[2]).split(',').map(k => k.trim().toLowerCase()) : [];
if (question === userQuestion || keywords.some(k => userQuestion.includes(k))) {
return answer;
}
}
return "ขออภัย ไม่เข้าใจคำถาม";
}
กิจกรรมที่ 2 ถามตอบโดยดึงข้อมูลจาก Google Sheets แบบ JSON
function doPost(e) {
const data = JSON.parse(e.postData.contents);
const event = data.events[0];
if (event.type === 'message' && event.message.type === 'text') {
const userText = event.message.text.trim().toLowerCase();
const replyToken = event.replyToken;
if (userText === 'สวัสดี') {
sendMessage(replyToken, { type: 'text', text: 'สวัสดีครับ! 😊' });
} else {
sendMessage(replyToken, findAnswer(userText));
}
}
}
function findAnswer(userQuestion) {
const sheet = SpreadsheetApp.openByUrl("https://docs.google.com/spreadsheets/d/1zxl-4z7gqOO92IqM_IYdpKs0FYhN68r3sHMfjoX_fd8/edit?usp=sharing")
.getSheetByName("คำถาม-คำตอบ");
if (!sheet) return { type: 'text', text: "ขออภัย ไม่พบข้อมูล" };
const data = sheet.getDataRange().getValues();
if (data.length <= 1) return { type: 'text', text: "ขออภัย ไม่พบข้อมูล" };
data.shift(); // Skip headers
for (let row of data) {
const question = String(row[0]).trim().toLowerCase();
let answer;
try {
answer = JSON.parse(String(row[1]).trim());
} catch (e) {
answer = { type: 'text', text: String(row[1]).trim() }; // Fallback to plain text
}
const keywords = row[2] ? String(row[2]).split(',').map(k => k.trim().toLowerCase()) : [];
if (question === userQuestion || keywords.some(k => userQuestion.includes(k))) {
return answer;
}
}
return { type: 'text', text: "ขออภัย ไม่เข้าใจคำถาม" };
}