ทำระบบจองคิว จองห้อง นัดหมายออนไลน์ด้วย Google Sheets และ Apps Script
อัปเดต 5 ตุลาคม 2026
ระบบจองเป็นงานที่ Apps Script ทำได้ดีมาก เพราะเชื่อมทั้ง Google Sheets (เก็บข้อมูล) + Google Calendar (ปฏิทิน) + Gmail/LINE (แจ้งเตือน) ได้ในที่เดียว หัวใจสำคัญคือ ห้ามมีการจองซ้อน
ระบบพร้อมใช้ที่เกี่ยวข้อง
ตรวจช่วงเวลาทับซ้อน
ช่วงเวลา A และ B ทับกันเมื่อ A.start < B.end && B.start < A.end
function book(req) {
const lock = LockService.getScriptLock();
lock.waitLock(10000); // สำคัญ: กันสองคนจองพร้อมกัน
try {
const sh = SpreadsheetApp.getActive().getSheetByName('bookings');
const rows = sh.getDataRange().getValues().slice(1);
const s = new Date(req.start), e = new Date(req.end);
const clash = rows.some(([, room, start, end, status]) =>
room === req.room && status !== 'cancelled' && s < new Date(end) && new Date(start) < e);
if (clash) throw new Error('ช่วงเวลานี้ถูกจองแล้ว');
sh.appendRow([Utilities.getUuid(), req.room, s, e, 'confirmed', req.name]);
} finally {
lock.releaseLock();
}
}
เพิ่มลง Google Calendar อัตโนมัติ
CalendarApp.getCalendarById(CALENDAR_ID)
.createEvent('จอง ' + req.room + ' - ' + req.name, s, e);
ฟีเจอร์ที่ลูกค้ามักต้องการ
- ปฏิทินแสดงช่องว่างรายวัน/สัปดาห์
- ยกเลิก/เลื่อนนัดเองผ่านลิงก์
- แจ้งเตือนก่อนถึงเวลานัดด้วย Trigger
- มัดจำผ่าน QR พร้อมเพย์
คำถามที่พบบ่อย: ระบบจองออนไลน์
ใช้ LockService ครอบขั้นตอนตรวจช่วงเวลาว่างและบันทึกการจอง ทำให้คำขอที่มาพร้อมกันถูกประมวลผลทีละรายการ
ไม่ต้อง ถ้า Deploy เว็บแอปแบบ Who has access: Anyone
ได้ ตั้ง Time-driven trigger ทุกชั่วโมงให้ค้นหานัดที่ใกล้ถึงแล้วส่ง LINE หรืออีเมล
ระบบอื่นที่น่าสนใจ
POS ร้านซักอบรีด
รับผ้าไว ออกแท็กทันที ผ้าไม่หาย ไม่เลยนัด · ใบรับผ้า ป้ายแท็ก กระดานงานซัก แจ้งเตือนน้ำยาใกล้หมด
POS ร้านนวดแผนไทย & สปา
เตียงไหนว่าง ใครนวดอยู่ รู้ได้ในแตะเดียว · บิลห้อง/เตียง กระดานคิวบริการ ค่ามือหมอนวด ตัดวัสดุต่อบริการและเตือนก่อนหมดเข้า LINE · บน Google Sheets ของร้านเอง ไม่มีค่ารายเดือน