โค้ด Google Apps Script (พร้อมใช้งานทันที)
วิธีนำไปใช้: 1. เปิด Google Sheets -> 2. เมนู ส่วนขยาย (Extensions) -> Apps Script -> 3. วางโค้ดนี้ -> 4. กด ทำให้ใช้งานได้ (Deploy) เป็น Web App
/**
* Lumina Bookstore Chatbot - Google Apps Script Backend
*/
const SHEET_NAMES = { USERS: 'Users', CHAT_LOGS: 'ChatLogs', ORDERS: 'Orders' };
function doGet(e) {
return ContentService.createTextOutput(JSON.stringify({ status: 'success', message: 'Lumina Bookstore API is ready!' }))
.setMimeType(ContentService.MimeType.JSON);
}
function doPost(e) {
initSheetsIfNotExist();
var payload = JSON.parse(e.postData.contents);
if (payload.action === 'LOG_USER') logUser(payload.data);
if (payload.action === 'LOG_CHAT') logChat(payload.data);
if (payload.action === 'CREATE_ORDER') createOrder(payload.data);
return ContentService.createTextOutput(JSON.stringify({ status: 'success' }))
.setMimeType(ContentService.MimeType.JSON);
}
function initSheetsIfNotExist() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
if (!ss.getSheetByName(SHEET_NAMES.USERS)) {
var s = ss.insertSheet(SHEET_NAMES.USERS);
s.appendRow(['Timestamp', 'Email', 'Full Name', 'Picture URL', 'Last Login', 'Total Orders']);
}
if (!ss.getSheetByName(SHEET_NAMES.CHAT_LOGS)) {
var s = ss.insertSheet(SHEET_NAMES.CHAT_LOGS);
s.appendRow(['Timestamp', 'User Email', 'Sender', 'Message Content', 'Intent / Topic']);
}
if (!ss.getSheetByName(SHEET_NAMES.ORDERS)) {
var s = ss.insertSheet(SHEET_NAMES.ORDERS);
s.appendRow(['Order ID', 'Timestamp', 'User Email', 'Customer Name', 'Phone Number', 'Book Title', 'Quantity', 'Unit Price', 'Total Amount', 'Payment Method', 'Shipping Address', 'Status']);
}
}
function logUser(data) {
var s = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(SHEET_NAMES.USERS);
s.appendRow([new Date().toLocaleString('th-TH'), data.email, data.name, data.picture, new Date().toLocaleString('th-TH'), 0]);
}
function logChat(data) {
var s = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(SHEET_NAMES.CHAT_LOGS);
s.appendRow([new Date().toLocaleString('th-TH'), data.userEmail, data.sender, data.message, data.intent]);
}
function createOrder(data) {
var s = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(SHEET_NAMES.ORDERS);
s.appendRow([data.orderId, new Date().toLocaleString('th-TH'), data.userEmail, data.customerName, data.phone, data.bookTitle, data.quantity, data.unitPrice, data.totalAmount, data.paymentMethod, data.address, data.status]);
}