🍜QR Menuคู่มือการติดตั้ง
⏱ ติดตั้งประมาณ 10 นาที · ไม่ต้องเขียนโค้ด · ฟรี

ติดตั้ง QR Menu

เมนู / แคตตาล็อกสินค้าออนไลน์ สแกน QR — ทำงานบน Google Sheets + Apps Script ในบัญชี Google ของคุณเอง ข้อมูลและรูปทั้งหมดอยู่ใน Drive ของคุณ ไม่มีค่าเซิร์ฟเวอร์ ไม่มีค่ารายเดือน

👤 บัญชี Googleแนะนำ Gmail ของร้าน (ใช้ร่วมกันได้หลายคน)
💻 คอมพิวเตอร์ใช้ตอนติดตั้งครั้งแรกเท่านั้น
📄 ไฟล์ 4 ไฟล์Code.gs · Index.html · Admin.html · appsscript.json
🖨️ เครื่องพิมพ์สำหรับพิมพ์ป้าย QR ตั้งโต๊ะ (ไม่บังคับ)
หน้าเมนูลูกค้าหน้าจัดการบนมือถือ
1

สร้างไฟล์ Google Sheets ใหม่

  1. เปิด sheets.new (หรือ Google Drive › ใหม่ › Google ชีต) ด้วยบัญชีที่ต้องการเก็บข้อมูลร้าน
  2. ตั้งชื่อไฟล์ที่มุมซ้ายบน เช่น QR Menu — ร้านของฉัน

เคล็ดลับ: ไฟล์นี้คือ "ฐานข้อมูลเมนู" ของร้าน ห้ามลบ แชร์ให้พนักงานแก้ราคา/ของหมดในชีตได้ หรือให้ใช้หน้าจัดการด้วย PIN แทน

2

เปิด Apps Script จากไฟล์ชีต

  1. ในไฟล์ชีต กดเมนู ส่วนขยาย › Apps Script (ภาษาอังกฤษ: Extensions › Apps Script)
  2. แท็บใหม่จะเปิดหน้าแก้ไขโค้ด ซึ่งมีไฟล์ Code.gs ว่าง ๆ อยู่ 1 ไฟล์
  3. ตั้งชื่อโปรเจกต์ที่มุมซ้ายบน (เช่น QR Menu) — ไม่บังคับ

สำคัญ: ต้องเปิด Apps Script จากเมนูของไฟล์ชีต เท่านั้น (ไม่ใช่สร้างจาก script.google.com) เพื่อให้โค้ดผูกกับไฟล์นี้ และให้หน้าเมนูอัปเดตทันทีเมื่อแก้ในชีต

3

วางไฟล์ทั้ง 4 ไฟล์

ในโฟลเดอร์ที่ดาวน์โหลด มีไฟล์ที่ต้องใช้ดังนี้

📄 Code.gs ← โค้ดฝั่งเซิร์ฟเวอร์ (วางแทนของเดิมทั้งหมด)
📄 Index.html ← หน้าเมนูลูกค้า (สร้างไฟล์ HTML ชื่อ Index)
📄 Admin.html ← หน้าจัดการร้าน (สร้างไฟล์ HTML ชื่อ Admin)
📄 appsscript.json ← การตั้งค่าโปรเจกต์ (เขตเวลา สิทธิ์ เว็บแอป)

3.1 วาง Code.gs

  1. เปิดไฟล์ Code.gs จากโฟลเดอร์ด้วย Notepad / VS Code แล้วกด Ctrl+A › Ctrl+C
  2. กลับมาที่ Apps Script คลิกไฟล์ Code.gs กด Ctrl+A แล้ว Ctrl+V วางทับโค้ดเดิมทั้งหมด

3.2 สร้างไฟล์ Index.html และ Admin.html

  1. กดปุ่ม + ข้างคำว่า "ไฟล์" › เลือก HTML
  2. พิมพ์ชื่อ Index (ตัว I ใหญ่ ไม่ต้องพิมพ์ .html) แล้วกด Enter
  3. ลบโค้ดตัวอย่างในไฟล์ใหม่ทิ้ง แล้ววางเนื้อหาทั้งหมดจากไฟล์ Index.html
  4. ทำซ้ำอีกครั้ง สร้างไฟล์ HTML ชื่อ Admin (ตัว A ใหญ่) แล้ววางเนื้อหาจาก Admin.html

3.3 วาง appsscript.json

  1. กดไอคอนเฟือง การตั้งค่าโปรเจกต์ (Project Settings) ทางซ้าย
  2. ติ๊ก แสดงไฟล์ Manifest "appsscript.json" ในเครื่องมือแก้ไข
  3. กลับไปที่ เครื่องมือแก้ไข (ไอคอน <>) จะเห็นไฟล์ appsscript.json เปิดแล้ววางเนื้อหาจากไฟล์ในโฟลเดอร์ทับทั้งหมด
  4. กด Ctrl+S หรือไอคอนแผ่นดิสก์เพื่อบันทึก

ตรวจสอบ: ด้านซ้ายต้องมี 4 ไฟล์ appsscript.json · Code.gs · Index.html · Admin.html ถ้าชื่อไฟล์ HTML ไม่ตรงตัว หน้าเว็บจะเปิดไม่ขึ้น

4

รันฟังก์ชัน setup และอนุญาตสิทธิ์

  1. ที่แถบเครื่องมือด้านบน เลือกฟังก์ชัน setup จากรายการ แล้วกด ▶ เรียกใช้ (Run)
  2. ครั้งแรก Google จะขอสิทธิ์ กด ตรวจสอบสิทธิ์ (Review permissions)
หน้าต่าง จำเป็นต้องให้สิทธิ์ — กด ตรวจสอบสิทธิ์
หน้าต่าง "จำเป็นต้องให้สิทธิ์" — กด ตรวจสอบสิทธิ์
  1. เลือกบัญชี Google ของคุณ (บัญชีเดียวกับเจ้าของไฟล์ชีต)
  2. จะพบหน้า "Google ยังไม่ได้ยืนยันแอปนี้" — เป็นเรื่องปกติของสคริปต์ที่คุณติดตั้งเอง กด ขั้นสูง แล้วกดลิงก์ ไปที่ QR Menu (ไม่ปลอดภัย) ด้านล่าง
กด ขั้นสูง แล้วกด ไปที่ … (ไม่ปลอดภัย)
กด "ขั้นสูง" (มุมซ้ายล่าง) แล้วกด "ไปที่ … (ไม่ปลอดภัย)"
  1. หน้าถัดไปแสดงรายการสิทธิ์ (ดู สิทธิ์ที่ขอ) ติ๊ก เลือกทั้งหมด แล้วกด ดำเนินการต่อ / อนุญาต
  2. รอจนบันทึกการดำเนินการขึ้นว่า การดำเนินการเสร็จสมบูรณ์ — ระบบสร้างชีต เมนู และ หมวดหมู่ พร้อมเมนูตัวอย่าง 21 รายการ 5 หมวด และข้อมูลร้านตัวอย่างให้แล้ว

ปลอดภัยไหม? โค้ดทั้งหมดอยู่ในโปรเจกต์ของคุณ เปิดอ่านได้ทุกบรรทัด และทำงานด้วยบัญชีของคุณเอง ไม่มีการส่งข้อมูลไปเซิร์ฟเวอร์อื่น · ฟังก์ชัน setup และ resetAdminPin ทำงานได้เฉพาะเมื่อเจ้าของกดเรียกใช้จากหน้านี้ ใครเรียกผ่านเว็บแอปจะถูกปฏิเสธ

5

จด PIN ผู้ดูแล

ใน บันทึกการดำเนินการ (Execution log) ด้านล่างของหน้าจอ จะมีข้อความคล้ายนี้

ติดตั้ง เมนูออนไลน์ สแกน QR เรียบร้อย ✔
PIN ผู้ดูแลของคุณคือ: 482913 ← ตัวเลขของคุณจะต่างจากนี้
ขั้นต่อไป: ทำให้ใช้งานได้ › การทำให้ใช้งานได้รายการใหม่ › เว็บแอป แล้วเปิด <ลิงก์>?admin=1 เพื่อจัดการเมนู

จด PIN 6 หลักนี้ไว้ ใช้เข้าหน้าจัดการร้านครั้งแรก แล้วเปลี่ยนเป็น PIN ที่จำง่ายได้ที่หน้า ตั้งค่าร้าน & ธีม

ไม่เห็น PIN? ถ้ารัน setup ซ้ำ ระบบจะไม่สร้าง PIN ใหม่ ให้เลือกฟังก์ชัน resetAdminPin แล้วกดเรียกใช้ PIN ใหม่จะขึ้นในบันทึกการดำเนินการ

6

เผยแพร่เป็นเว็บแอป

  1. กดปุ่มสีน้ำเงิน การทำให้ใช้งานได้ (Deploy) มุมขวาบน › การทำให้ใช้งานได้รายการใหม่
เมนู การทำให้ใช้งานได้ › การทำให้ใช้งานได้รายการใหม่
เมนู การทำให้ใช้งานได้ › การทำให้ใช้งานได้รายการใหม่
  1. กดไอคอนเฟืองข้าง "เลือกประเภท" แล้วเลือก เว็บแอป
เลือกประเภท เว็บแอป
เลือกประเภท "เว็บแอป"
  1. ตั้งค่า: ดำเนินการในฐานะ = ฉัน และ ผู้มีสิทธิ์เข้าถึง = ทุกคน แล้วกด การทำให้ใช้งานได้
ดำเนินการในฐานะ: ฉัน · ผู้มีสิทธิ์เข้าถึง: ทุกคน
ดำเนินการในฐานะ: ฉัน · ผู้มีสิทธิ์เข้าถึง: ทุกคน

ต้องเลือก "ทุกคน": ลูกค้าที่สแกน QR ไม่ต้องล็อกอิน Google ก็เปิดเมนูได้ ส่วนหน้าจัดการร้านล็อกด้วย PIN อยู่แล้ว

  1. คัดลอก URL ของเว็บแอป (ลงท้ายด้วย /exec) แล้วกด เสร็จสิ้น
คัดลอก URL ของเว็บแอป
คัดลอก URL ของเว็บแอป — นี่คือลิงก์หน้าเมนูของร้านคุณ
ลิงก์ใช้ทำอะไร
…/execหน้าเมนูลูกค้า (ใช้ทำ QR)
…/exec?t=5หน้าเมนูของโต๊ะ 5 (ระบบสร้างให้ตอนพิมพ์ป้ายแยกโต๊ะ)
…/exec?admin=1หน้าจัดการร้าน (ใส่ PIN)
7

ตั้งค่าร้าน แล้วพิมพ์ QR

  1. เปิด …/exec?admin=1 แล้วใส่ PIN จากขั้นตอนที่ 5 (ระบบจำการเข้าสู่ระบบในเครื่องนั้น 30 วัน)
  2. หน้า ตั้งค่าร้าน & ธีม: ใส่ชื่อร้าน โลโก้ เวลาเปิด-ปิด เบอร์โทร LINE แผนที่ Wi-Fi เลือกสีธีม แล้วกด บันทึกการตั้งค่า
  3. หน้า ตั้งค่าร้าน › ลบเมนูทั้งหมด เพื่อล้างเมนูตัวอย่าง แล้วเพิ่มเมนูจริงจากหน้า เมนูอาหาร (หรือพิมพ์ลงชีต เมนู ทีละหลายแถว)
  4. หน้า QR & ป้ายตั้งโต๊ะ: เลือกขนาด A6/A5 และเลขโต๊ะ แล้วกด พิมพ์ป้าย
  5. บนมือถือร้าน: เปิดลิงก์หน้าจัดการ › เมนูเบราว์เซอร์ › เพิ่มไปยังหน้าจอหลัก เพื่อกด "หมด" ได้ในแตะเดียว
หน้าใส่ PIN
หน้าใส่ PIN ของหน้าจัดการ
ป้ายตั้งโต๊ะ
ป้ายตั้งโต๊ะที่พิมพ์ได้ทันที
↻

อัปเดตเป็นเวอร์ชันใหม่ (ลิงก์เดิม — QR เดิมใช้ได้)

  1. วางโค้ด Code.gs Index.html Admin.html เวอร์ชันใหม่ทับของเดิม แล้วบันทึก (ข้อมูลในชีตไม่หาย)
  2. กด การทำให้ใช้งานได้ › จัดการการทำให้ใช้งานได้ › ไอคอนดินสอ ✏️
  3. ช่อง เวอร์ชัน เลือก เวอร์ชันใหม่ แล้วกด การทำให้ใช้งานได้

อย่ากด "การทำให้ใช้งานได้รายการใหม่" ซ้ำ เพราะจะได้ลิงก์ใหม่ และ QR ที่พิมพ์ไว้จะใช้ไม่ได้

?

ลืม PIN / แก้ปัญหาที่พบบ่อย

ลืม PIN ผู้ดูแล

เปิด Apps Script › เลือกฟังก์ชัน resetAdminPin › กด เรียกใช้ › PIN ใหม่จะขึ้นในบันทึกการดำเนินการ (ทุกอุปกรณ์ต้องเข้าสู่ระบบใหม่) · ฟังก์ชันนี้ต้องรันโดยเจ้าของสคริปต์จากหน้า Apps Script เท่านั้น

เปิดลิงก์แล้วขึ้น "ไม่พบไฟล์ HTML ชื่อ Index / Admin"

ชื่อไฟล์ HTML ต้องเป็น Index และ Admin ตรงตัวพิมพ์เล็ก-ใหญ่ เปลี่ยนชื่อแล้ว อัปเดตเวอร์ชัน

ขึ้น "ไม่พบชีต … กรุณารันฟังก์ชัน setup"

มีคนลบหรือเปลี่ยนชื่อชีต ให้รัน setup อีกครั้ง ระบบจะสร้างชีตที่หายไปให้ (ข้อมูลที่มีอยู่ไม่ถูกลบ)

รัน setup แล้วขึ้น "ต้องเรียกใช้จากหน้า Apps Script โดยเจ้าของสคริปต์เท่านั้น"

ต้องล็อกอินด้วยบัญชีเจ้าของไฟล์ชีต/สคริปต์ และอนุญาตสิทธิ์ "ดูอีเมลหลักของบัญชี" ให้ครบ ถ้าเปิดหลายบัญชีในเบราว์เซอร์เดียวกัน ลองใช้หน้าต่างไม่ระบุตัวตนที่ล็อกอินบัญชีเดียว

อัปโหลดรูปไม่ได้ / รูปไม่ขึ้นในหน้าเมนู

บัญชี Google Workspace ขององค์กรบางแห่งห้ามแชร์ไฟล์ "ทุกคนที่มีลิงก์" — ใช้บัญชี Gmail ส่วนตัว หรือวางลิงก์รูปจากที่อื่นแทน · ถ้าเพิ่ง deploy ครั้งแรกแล้วอัปโหลดไม่ได้ ให้รัน setup อีกครั้งเพื่ออนุญาตสิทธิ์ Google Drive

แก้โค้ดแล้วหน้าเว็บไม่เปลี่ยน

ลิงก์ /exec ใช้เวอร์ชันที่ deploy ไว้ ต้อง อัปเดตเวอร์ชัน ทุกครั้งที่แก้โค้ด (แก้เมนูในหน้าจัดการหรือในชีตไม่ต้อง deploy ใหม่)

ลูกค้าสแกนแล้วขึ้นหน้าล็อกอิน Google หรือ "ไม่มีสิทธิ์"

ตรวจว่าตั้ง ผู้มีสิทธิ์เข้าถึง = ทุกคน (ดูขั้นตอนที่ 6) หากแก้ภายหลังต้องอัปเดตเวอร์ชัน

🔐

สิทธิ์ที่ระบบขอ และเหตุผล

สิทธิ์ใช้ทำอะไร
ดูและแก้ไขไฟล์ Google Sheetsอ่าน/เขียนเมนูและหมวดหมู่ในไฟล์ชีตของระบบ (ไฟล์ที่คุณติดตั้งเท่านั้นที่โค้ดเปิดใช้)
ดู แก้ไข สร้าง และลบเฉพาะไฟล์ Google Drive ที่แอปนี้ใช้สร้างโฟลเดอร์ "QR Menu – รูปเมนู" เก็บรูปที่อัปโหลด และแชร์รูปให้ลูกค้าดูได้ — ไม่เห็นไฟล์อื่นใน Drive ของคุณ
จัดการทริกเกอร์และข้อมูลเว็บแอปของสคริปต์อ่านลิงก์เว็บแอปเพื่อนำไปสร้าง QR และลิงก์แยกโต๊ะ
ดูอีเมลหลักของบัญชีตรวจว่าคนที่สั่งรัน setup / resetAdminPin คือเจ้าของสคริปต์ (กันคนอื่นรีเซ็ต PIN ผ่านเว็บแอป)

ระบบไม่ขอสิทธิ์อ่าน Gmail, ไฟล์อื่นใน Drive หรือรายชื่อติดต่อ และไม่ส่งข้อมูลออกไปภายนอกบัญชีของคุณ (ยกเว้นโหลดฟอนต์จาก Google Fonts และไอคอนหน้าจัดการจาก CDN สาธารณะ) · QR สร้างในเบราว์เซอร์ ไม่ใช้บริการสร้าง QR ภายนอก

เมนู / แคตตาล็อกสินค้าออนไลน์ สแกน QR (QR Menu) v1.0.0 · แจกฟรีโดย GAS Hub · ใช้งานได้ฟรี ห้ามนำไปจำหน่ายต่อ