คู่มือสร้างระบบจองคิว Google Forms + Google Sheets

ครบจบในที่เดียว ตั้งแต่การสร้างฟอร์ม → เชื่อม Sheets → ออกเลขคิวอัตโนมัติ → ส่งอีเมลยืนยัน

ระบบจองคิว Google Form นี้ประกอบด้วย 3 ส่วนหลักที่ทำงานร่วมกัน ได้แก่

  1. Google Form – หน้าฟอร์มให้ผู้ใช้กรอกข้อมูลจองคิว (ชื่อ, เบอร์โทร, วันที่, เวลา, บริการ)
  2. Google Sheets – เก็บข้อมูลทั้งหมดอัตโนมัติ ใช้จัดการคิว เปลี่ยนสถานะ ดูสรุป
  3. Apps Script – ออกเลขคิวอัตโนมัติ + ส่งอีเมลยืนยันให้ผู้จอง
สารบัญ

ขั้นตอนที่ 1 สร้าง Google Form

  1. เข้าไปที่ forms.google.com แล้วกด + สร้างแบบฟอร์มใหม่
  2. ตั้งชื่อแบบฟอร์ม เช่น ระบบจอง
  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)
ตั้งเป็น “จำเป็น”

เคล็ดลับ: เปิด ตั้งค่า → รวบรวมที่อยู่อีเมล เพื่อเก็บอีเมลผู้จองอัตโนมัติ

ขั้นตอนที่ 2 เชื่อมกับ Google Sheets

  1. ที่หน้า Form กดแท็บ “Responses” (คำตอบ)
  2. กดไอคอน Google Sheets สีเขียว (Link to Sheets)
  3. เลือก “Create a new spreadsheet” ตั้งชื่อ “ข้อมูลจองคิว”
  4. ระบบจะเปิด Google Sheets ที่เชื่อมไว้ทันที

เคล็ดลับ: เปลี่ยนชื่อ Sheet แรกเป็น “คิวทั้งหมด” เพื่อให้ตรงกับสคริปต์

ขั้นตอนที่ 3 เพิ่มคอลัมน์จัดการคิวใน Sheets

คอลัมน์
ตัวอย่างข้อมูล
วิธีใช้
หมายเลขคิว
Q001, Q002
สคริปต์จะใส่อัตโนมัติ
สถานะ
รอดำเนินการ
เปลี่ยนมือ: รอดำเนินการ / เสร็จสิ้น / ยกเลิก

เคล็ดลับ: สร้าง Data Validation ในคอลัมน์สถานะ: Data > Data validation > List: รอดำเนินการ, เสร็จสิ้น, ยกเลิก

ขั้นตอนที่ 4 เพิ่ม Apps Script ออกเลขคิวอัตโนมัติ

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) แล้วตั้งชื่อโปรเจกต์

ขั้นตอนที่ 5 ตั้ง Trigger ให้สคริปต์ทำงานอัตโนมัติ

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 ได้เลย

ขั้นตอนที่ 6 สร้าง Sheet แดชบอร์ดสรุปข้อมูล

สร้าง 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 ของคุณ

ขั้นตอนที่ 7 แชร์ฟอร์มและทดสอบ

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)

ตัวอย่างระบบจองคิว Google Form ที่ยากกว่าข้อมูลหน้านี้

คำถามที่พบบ่อย (FAQ)

จำกัดจำนวนคิวต่อช่วงเวลาได้ไหม?

ได้ ใช้ Add-on “formLimiter” หรือ “Choice Eliminator 2” ใน Google Form เพื่อปิดตัวเลือกอัตโนมัติเมื่อครบจำนวน

ได้ ใช้แอป Google Sheets บน iOS/Android ดูและจัดการคิวได้ทุกที่

ได้ Google Sheets รองรับหลายคนแก้ไขพร้อมกัน เพียงแชร์ไฟล์ให้ทีม