หัวใจของแทบทุกระบบคือ CRUD — เพิ่ม อ่าน แก้ไข ลบ ข้อมูล บทความนี้จะสอนทำ CRUD ครบวงจรด้วย Google Apps Script โดยใช้ Google Sheet เป็นฐานข้อมูล พร้อมแสดงข้อมูลเป็นตารางบนหน้าเว็บ เหมาะสำหรับผู้เริ่มต้น
═══════════════════════════════════════
📌 1. CRUD คืออะไร (ทบทวน)
═══════════════════════════════════════
CRUD = การจัดการข้อมูล 4 อย่างพื้นฐาน
• C = Create → เพิ่มข้อมูล
• R = Read → อ่าน/แสดงข้อมูล
• U = Update → แก้ไขข้อมูล
• D = Delete → ลบข้อมูล
ถ้าทำ CRUD เป็น จะสร้างระบบได้แทบทุกชนิด (ลงทะเบียน, แจ้งซ่อม, สินค้า ฯลฯ)
═══════════════════════════════════════
📊 2. เตรียม Google Sheet
═══════════════════════════════════════
สร้าง Sheet ใหม่ ตั้งชื่อชีตว่า "data" และใส่หัวคอลัมน์ที่แถวแรก:
A1 = id B1 = name C1 = email
โครงสร้างนี้: คอลัมน์ id ใช้ระบุแต่ละแถวไม่ให้ซ้ำ (สำคัญมากสำหรับ Update/Delete)
═══════════════════════════════════════
➕ 3. CREATE — เพิ่มข้อมูล
═══════════════════════════════════════
function createRow(name, email) {
var sheet = SpreadsheetApp.openById("SHEET_ID").getSheetByName("data");
// สร้าง id ใหม่จากเวลาปัจจุบัน (ไม่ซ้ำ)
var id = new Date().getTime();
sheet.appendRow([id, name, email]);
return id;
}
═══════════════════════════════════════
🔍 4. READ — อ่านข้อมูลทั้งหมด
═══════════════════════════════════════
function readAll() {
var sheet = SpreadsheetApp.openById("SHEET_ID").getSheetByName("data");
var values = sheet.getDataRange().getValues();
// แปลงเป็น array ของ object (ข้ามแถวหัวตาราง)
var result = [];
for (var i = 1; i < values.length; i++) {
result.push({
id: values[i][0],
name: values[i][1],
email: values[i][2]
});
}
return result;
}
═══════════════════════════════════════
✏️ 5. UPDATE — แก้ไขข้อมูล (ค้นหาแถวด้วย id)
═══════════════════════════════════════
function updateRow(id, newName, newEmail) {
var sheet = SpreadsheetApp.openById("SHEET_ID").getSheetByName("data");
var values = sheet.getDataRange().getValues();
for (var i = 1; i < values.length; i++) {
if (values[i][0] == id) { // เจอแถวที่ id ตรงกัน
// แถวจริงใน Sheet = i + 1 (เพราะเริ่มนับ 1 และมีหัวตาราง)
sheet.getRange(i + 1, 2).setValue(newName); // คอลัมน์ B
sheet.getRange(i + 1, 3).setValue(newEmail); // คอลัมน์ C
return true;
}
}
return false; // ไม่พบ id
}
═══════════════════════════════════════
🗑️ 6. DELETE — ลบข้อมูล
═══════════════════════════════════════
function deleteRow(id) {
var sheet = SpreadsheetApp.openById("SHEET_ID").getSheetByName("data");
var values = sheet.getDataRange().getValues();
for (var i = 1; i < values.length; i++) {
if (values[i][0] == id) {
sheet.deleteRow(i + 1); // ลบแถวจริงใน Sheet
return true;
}
}
return false;
}
═══════════════════════════════════════
🌐 7. แสดงข้อมูลเป็นตารางบนหน้าเว็บ
═══════════════════════════════════════
ฝั่งเซิร์ฟเวอร์ (Code.gs) มี doGet และ readAll อยู่แล้ว
ฝั่งหน้าเว็บเรียก readAll() ผ่าน google.script.run แล้ววาดตาราง
<body>
<h2>รายชื่อ</h2>
<table id="myTable" border="1"></table>
<script>
// เมื่อโหลดหน้า ให้ดึงข้อมูลมาแสดง
window.onload = function() {
google.script.run.withSuccessHandler(showTable).readAll();
};
function showTable(rows) {
var html = "<tr><th>ชื่อ</th><th>อีเมล</th></tr>";
rows.forEach(function(r) {
html += "<tr><td>" + r.name + "</td><td>" + r.email + "</td></tr>";
});
document.getElementById("myTable").innerHTML = html;
}
</script>
</body>
*** withSuccessHandler(ฟังก์ชัน) = สั่งให้ทำงานเมื่อได้ข้อมูลกลับมาจากเซิร์ฟเวอร์ ***
═══════════════════════════════════════
🔗 8. รวมทุกอย่าง (Code.gs)
═══════════════════════════════════════
function doGet() {
return HtmlService.createHtmlOutputFromFile('index');
}
// วาง 4 ฟังก์ชัน CRUD (createRow, readAll, updateRow, deleteRow) ไว้ในไฟล์นี้
// หน้าเว็บเรียกผ่าน google.script.run.<ชื่อฟังก์ชัน>(...)
═══════════════════════════════════════
✅ 9. สรุป
═══════════════════════════════════════
• ใช้คอลัมน์ id ระบุแต่ละแถว (จำเป็นสำหรับ Update/Delete)
• Create = appendRow, Read = getValues, Update = setValue, Delete = deleteRow
• แถวจริงใน Sheet = index ใน array + 1 (เพราะมีหัวตาราง)
• หน้าเว็บคุยกับเซิร์ฟเวอร์ผ่าน google.script.run + withSuccessHandler
จำไว้: ทำ CRUD ให้ได้ 1 ระบบ แล้วคุณจะประยุกต์สร้างระบบอื่นได้ทั้งหมด 🗂️