ครบจบในที่เดียว ตั้งแต่การสร้างฟอร์ม → เชื่อม Sheets → ออกเลขคิวอัตโนมัติ → ส่งอีเมลยืนยัน
ระบบจองคิว Google Form นี้ประกอบด้วย 3 ส่วนหลักที่ทำงานร่วมกัน ได้แก่
ลำดับ | คำถาม | ประเภท | หมายเหตุ |
|---|---|---|---|
1. | อีเมล | เปิด “รวบรวมที่อยู่อีเมล” | เปิดใน Settings |
2. | ชื่อ-นามสกุล | คำตอบสั้น | ตั้งเป็น “จำเป็น” |
3. | เบอร์โทรศัพท์ | คำตอบสั้น | ตั้งเป็น “จำเป็น” |
4. | วันที่ต้องการ | วันที่ (Date) | ตั้งเป็น “จำเป็น” |
5. | ช่วงเวลา | เลือกตัวเลือก (Dropdown) | ตั้งเป็น “จำเป็น” ตัวเลือกเช่น 09:00-10:00, 10:00-11:00, 11:00-12:00 |
6. | ประเภทบริการ | หลายตัวเลือก (Multiple choice) | ตั้งเป็น “จำเป็น” ตัวเลือกเช่น ตรวจสุขภาพ, ฉีดวัคซีน, ทันตกรรม |
7. | หมายเหตุ | ย่อหน้า (Paragraph) | ตั้งเป็น “จำเป็น” |
เคล็ดลับ: เปิด ตั้งค่า → รวบรวมที่อยู่อีเมล เพื่อเก็บอีเมลผู้จองอัตโนมัติ
เคล็ดลับ: เปลี่ยนชื่อ Sheet แรกเป็น “คิวทั้งหมด” เพื่อให้ตรงกับสคริปต์
คอลัมน์ | ตัวอย่างข้อมูล | วิธีใช้ |
|---|---|---|
หมายเลขคิว | Q001, Q002 | สคริปต์จะใส่อัตโนมัติ |
สถานะ | รอดำเนินการ | เปลี่ยนมือ: รอดำเนินการ / เสร็จสิ้น / ยกเลิก |
เคล็ดลับ: สร้าง Data Validation ในคอลัมน์สถานะ: Data > Data validation > List: รอดำเนินการ, เสร็จสิ้น, ยกเลิก
1. ที่ Google Sheets ไปที่ Extensions > Apps Script
2. ลบโค้ดเดิมทั้งหมด แล้ววางโค้ดด้านล่าง
// === Google Apps Script ===
function onFormSubmit(e) {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("คิวทั้งหมด");
var lastRow = sheet.getLastRow();
var queueNum = "Q" + String(lastRow).padStart(3, "0");
// เขียนหมายเลขคิวในคอลัมน์สุดท้าย
sheet.getRange(lastRow, sheet.getLastColumn() + 1).setValue(queueNum);
// เขียนสถานะ "รอดำเนินการ"
sheet.getRange(lastRow, sheet.getLastColumn() + 1).setValue("รอดำเนินการ");
// ส่งอีเมลยืนยัน (ถ้ามีอีเมล)
var responses = e.values;
var email = responses[1]; // ปรับตาม column อีเมล
var name = responses[2]; // ปรับตาม column ชื่อ
if (email && email.includes("@")) {
var subject = "ยืนยันการจองคิว - หมายเลข " + queueNum;
var body = "สวัสดีคุณ " + name + "\n\n" +
"การจองคิวของท่านได้รับการยืนยันแล้ว\n" +
"หมายเลขคิว: " + queueNum + "\n" +
"วันที่: " + responses[3] + "\n" +
"เวลา: " + responses[4] + "\n" +
"บริการ: " + responses[5] + "\n\n" +
"กรุณามาตามวันเวลาที่จอง\n" +
"ขอบคุณครับ/ค่ะ";
MailApp.sendEmail(email, subject, body);
}
}
function checkSlotAvailability() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("คิวทั้งหมด");
var data = sheet.getDataRange().getValues();
var MAX_PER_SLOT = 5;
var slotCount = {};
for (var i = 1; i < data.length; i++) {
var date = data[i][3]; // คอลัมน์วันที่
var time = data[i][4]; // คอลัมน์เวลา
var key = date + "|" + time;
slotCount[key] = (slotCount[key] || 0) + 1;
}
return slotCount;
}
function updateDashboard() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var source = ss.getSheetByName("คิวทั้งหมด");
var dash = ss.getSheetByName("แดชบอร์ด");
var data = source.getDataRange().getValues();
var total = data.length - 1;
var waiting = 0, done = 0, cancelled = 0;
for (var i = 1; i < data.length; i++) {
var status = data[i][data[i].length - 1];
if (status === "รอดำเนินการ") waiting++;
else if (status === "เสร็จสิ้น") done++;
else if (status === "ยกเลิก") cancelled++;
}
dash.getRange("B2").setValue(total);
dash.getRange("B3").setValue(waiting);
dash.getRange("B4").setValue(done);
dash.getRange("B5").setValue(cancelled);
dash.getRange("B6").setValue(new Date());
}
3. กด Save (Ctrl+S) แล้วตั้งชื่อโปรเจกต์
1. ใน Apps Script กดไอคอนนาฬิกา (Triggers) ทางซ้าย
2. กด “+ Add Trigger” มุมล่างขวา
3. ตั้งค่าดังนี้
ตั้งค่า | ค่าที่เลือก |
|---|---|
Choose which function | onFormSubmit |
Select event source | From spreadsheet |
Select event type | On form submit |
4. กด Save แล้วอนุญาตสิทธิ์ (Review permissions > Allow)
เคล็ดลับ: ระบบจะขอสิทธิ์อ่าน/เขียน Sheets และส่งอีเมล กด Allow ได้เลย
สร้าง Sheet ใหม่ชื่อ “แดชบอร์ด” แล้วใส่สูตรเหล่านี้
รายการ | สูตร Excel |
|---|---|
จำนวนคิวทั้งหมด | =COUNTA(คิวทั้งหมด!A:A)-1 |
รอดำเนินการ | =COUNTIF(คิวทั้งหมด!I:I,”รอดำเนินการ”) |
เสร็จสิ้น | =COUNTIF(คิวทั้งหมด!I:I,”เสร็จสิ้น”) |
ยกเลิก | =COUNTIF(คิวทั้งหมด!I:I,”ยกเลิก”) |
คิววันนี้ | =COUNTIF(คิวทั้งหมด!D:D,TODAY()) |
คิวว่างวันนี้ (ต่อช่วง) | =5-COUNTIFS(คิวทั้งหมด!D:D,TODAY(),คิวทั้งหมด!E:E,”09:00-10:00″) |
เคล็ดลับ: ปรับตัวอักษรคอลัมน์ (I, D, E) ให้ตรงกับ Sheets ของคุณ
1. กลับไปที่ Google Form กดปุ่ม “Send” (ส่ง)
2. เลือกแชร์ทาง Link, Email หรือ Embed (ฝังในเว็บ)
3. ทดสอบกรอกฟอร์ม 2-3 ครั้ง
4. ตรวจสอบ Sheets ว่าข้อมูลเข้ามาครบ + มีเลขคิว + สถานะ
เมื่อตั้งค่าเสร็จ ระบบจะทำงานดังนี้
1. ผู้ใช้เปิด Google Form กรอกข้อมูลจองคิว แล้วกด Submit
2. ข้อมูลไหลเข้า Google Sheets อัตโนมัติ
3. Apps Script ออกเลขคิว (Q001, Q002…) และเขียนสถานะ “รอดำเนินการ”
4. ผู้จองได้รับอีเมลยืนยันพร้อมหมายเลขคิว
5. ผู้ดูแลจัดการคิวใน Sheets: เปลี่ยนสถานะ, กรอง, เรียงลำดับ, ดูแดชบอร์ด
6. สามารถ Export เป็น Excel ได้: File > Download > Microsoft Excel (.xlsx)
ได้ ใช้ Add-on “formLimiter” หรือ “Choice Eliminator 2” ใน Google Form เพื่อปิดตัวเลือกอัตโนมัติเมื่อครบจำนวน
ได้ ใช้แอป Google Sheets บน iOS/Android ดูและจัดการคิวได้ทุกที่
ได้ Google Sheets รองรับหลายคนแก้ไขพร้อมกัน เพียงแชร์ไฟล์ให้ทีม