สร้างไฟล์ Google Sheets ใหม่
- เปิด sheets.new (หรือ Google Drive › ใหม่ › Google ชีต) ด้วยบัญชีที่ต้องการเก็บข้อมูล
- ตั้งชื่อไฟล์ที่มุมซ้ายบน เช่น ทะเบียนครุภัณฑ์ — Asset QR
เคล็ดลับ: ไฟล์นี้คือ "ฐานข้อมูล" ของระบบ ห้ามลบ ใช้บัญชีกลางของหน่วยงาน (ไม่ใช่บัญชีส่วนตัวของครู/เจ้าหน้าที่ที่อาจย้ายงาน) เพื่อให้ส่งต่องานได้
เปิด Apps Script จากไฟล์ชีต
- ในไฟล์ชีต กดเมนู ส่วนขยาย › Apps Script (Extensions › Apps Script)
- แท็บใหม่จะเปิดหน้าแก้ไขโค้ด ซึ่งมีไฟล์
Code.gsว่าง ๆ อยู่ 1 ไฟล์ - ตั้งชื่อโปรเจกต์ที่มุมซ้ายบน (เช่น Asset QR) — ไม่บังคับ
สำคัญ: ต้องเปิด Apps Script จากเมนูของไฟล์ชีต เท่านั้น (ไม่ใช่สร้างจาก script.google.com) เพื่อให้โค้ดผูกกับไฟล์นี้
วางไฟล์ทั้ง 3 ไฟล์
ในโฟลเดอร์ที่ดาวน์โหลด มีไฟล์ที่ต้องใช้ดังนี้
3.1 วาง Code.gs
- เปิดไฟล์
Code.gsจากโฟลเดอร์ด้วย Notepad / VS Code แล้วกด Ctrl+A › Ctrl+C - กลับมาที่ Apps Script คลิกไฟล์
Code.gsกด Ctrl+A แล้ว Ctrl+V วางทับโค้ดเดิมทั้งหมด
3.2 สร้างไฟล์ Index.html
- กดปุ่ม + ข้างคำว่า "ไฟล์" › เลือก HTML
- พิมพ์ชื่อ
Index(ตัว I ใหญ่ ไม่ต้องพิมพ์ .html) แล้วกด Enter - ลบโค้ดตัวอย่างในไฟล์ใหม่ทิ้ง แล้ววางเนื้อหาทั้งหมดจากไฟล์
Index.html
3.3 วาง appsscript.json
- กดไอคอนเฟือง การตั้งค่าโปรเจกต์ (Project Settings) ทางซ้าย
- ติ๊ก แสดงไฟล์ Manifest "appsscript.json" ในเครื่องมือแก้ไข
- กลับไปที่ เครื่องมือแก้ไข (ไอคอน <>) เปิดไฟล์
appsscript.jsonแล้ววางเนื้อหาจากไฟล์ในโฟลเดอร์ทับทั้งหมด - กด Ctrl+S หรือไอคอนแผ่นดิสก์เพื่อบันทึก
ตรวจสอบ: ด้านซ้ายต้องมี 3 ไฟล์ appsscript.json · Code.gs · Index.html ถ้าชื่อไฟล์ HTML ไม่ใช่ Index ตรงตัว หน้าเว็บจะเปิดไม่ขึ้น
รันฟังก์ชัน setup และอนุญาตสิทธิ์
- ที่แถบเครื่องมือด้านบน เลือกฟังก์ชัน
setupจากรายการ แล้วกด ▶ เรียกใช้ (Run) - ครั้งแรก Google จะขอสิทธิ์ กด ตรวจสอบสิทธิ์ (Review permissions)

- เลือกบัญชี Google ของคุณ (บัญชีเดียวกับเจ้าของไฟล์ชีต)
- จะพบหน้า "Google ยังไม่ได้ยืนยันแอปนี้" — เป็นเรื่องปกติของสคริปต์ที่คุณติดตั้งเอง กด ขั้นสูง แล้วกดลิงก์ ไปที่ Asset QR (ไม่ปลอดภัย) ด้านล่าง

- หน้าถัดไปแสดงรายการสิทธิ์ (ดู สิทธิ์ที่ขอ) ติ๊ก เลือกทั้งหมด แล้วกด ดำเนินการต่อ / อนุญาต
- รอจนบันทึกการดำเนินการขึ้นว่า การดำเนินการเสร็จสมบูรณ์ — ระบบสร้างชีต ทะเบียนครุภัณฑ์ ประเภทครุภัณฑ์ ประวัติ รอบตรวจนับ ผลตรวจนับ พร้อมประเภทเริ่มต้นและข้อมูลตัวอย่างของโรงเรียนสมมติ
ปลอดภัยไหม? โค้ดทั้งหมดอยู่ในโปรเจกต์ของคุณ เปิดอ่านได้ทุกบรรทัด ทำงานด้วยบัญชีของคุณเอง และไม่ส่งข้อมูลไปเซิร์ฟเวอร์อื่น
จด PIN ผู้ดูแล
ใน บันทึกการดำเนินการ (Execution log) ด้านล่างของหน้าจอ จะมีข้อความคล้ายนี้
จด PIN 6 หลักนี้ไว้ ใช้เข้าหน้าผู้ดูแลครั้งแรก แล้วเปลี่ยนเป็น PIN ที่จำง่ายได้ที่หน้า ตั้งค่า · กรรมการตรวจนับใช้ PIN เดียวกัน เปลี่ยนใหม่หลังจบรอบได้
ไม่เห็น PIN? ถ้ารัน setup ซ้ำ ระบบจะไม่สร้าง PIN ใหม่ ให้เลือกฟังก์ชัน resetAdminPin แล้วกดเรียกใช้ PIN ใหม่จะขึ้นในบันทึกการดำเนินการ
เผยแพร่เป็นเว็บแอป
- กดปุ่มสีน้ำเงิน การทำให้ใช้งานได้ (Deploy) มุมขวาบน › การทำให้ใช้งานได้รายการใหม่

- กดไอคอนเฟืองข้าง "เลือกประเภท" แล้วเลือก เว็บแอป

- ตั้งค่า: ดำเนินการในฐานะ = ฉัน และ ผู้มีสิทธิ์เข้าถึง = ทุกคน แล้วกด การทำให้ใช้งานได้

ทำไมต้อง "ทุกคน": เพื่อให้กรรมการและผู้ที่สแกน QR เปิดหน้าได้โดยไม่ต้องล็อกอิน Google หน้าผู้ดูแลยังล็อกด้วย PIN และคนทั่วไปเห็นเฉพาะข้อมูลพื้นฐาน (ปิดได้ในหน้า ตั้งค่า)
- คัดลอก URL ของเว็บแอป (ลงท้ายด้วย
/exec) แล้วกด เสร็จสิ้น

เปิดใช้งานครั้งแรก
- วาง URL ในเบราว์เซอร์ (คอมหรือมือถือ) จะพบหน้าใส่ PIN
- ใส่ PIN จากขั้นตอนที่ 5 — ระบบจำการเข้าสู่ระบบในเครื่องนั้นไว้ 30 วัน
- ไปที่หน้า ตั้งค่า: ใส่ชื่อหน่วยงาน ชื่อย่อบนสติ๊กเกอร์ ปรับรูปแบบเลขครุภัณฑ์และอายุการใช้งานของแต่ละประเภทให้ตรงกับหน่วยงาน
- ตรวจ ลิงก์ใน QR ว่าตรงกับ URL ที่คัดลอกในขั้นตอนที่ 6 (ปกติระบบตรวจพบเอง)
- ลองพิมพ์สติ๊กเกอร์ 1 แผ่นบนกระดาษธรรมดา แล้วสแกนด้วยมือถือ
- บนมือถือ: กดเมนูเบราว์เซอร์ › เพิ่มไปยังหน้าจอหลัก เพื่อเปิดได้เหมือนแอป


เริ่มใช้จริง: ข้อมูลตัวอย่างช่วยให้ลองเล่นได้ทันที เมื่อพร้อมให้ไปที่หน้า ตั้งค่า › ล้างข้อมูลทั้งหมด (ประเภทครุภัณฑ์และการตั้งค่ายังอยู่) แล้วเพิ่มหรือนำเข้าทะเบียนจริง
อัปเดตเป็นเวอร์ชันใหม่ (ลิงก์เดิม)
- วางโค้ด
Code.gsและIndex.htmlเวอร์ชันใหม่ทับของเดิม แล้วบันทึก (ข้อมูลในชีตไม่หาย) - กด การทำให้ใช้งานได้ › จัดการการทำให้ใช้งานได้ › ไอคอนดินสอ ✏️
- ช่อง เวอร์ชัน เลือก เวอร์ชันใหม่ แล้วกด การทำให้ใช้งานได้
อย่ากด "การทำให้ใช้งานได้รายการใหม่" ซ้ำ เพราะจะได้ลิงก์ใหม่ สติ๊กเกอร์ QR ที่ติดไปแล้วจะยังชี้ไปเวอร์ชันเก่า ถ้าเผลอทำไปแล้ว ให้ใส่ลิงก์เดิมในหน้า ตั้งค่า › ลิงก์ใน QR
ลืม PIN / แก้ปัญหาที่พบบ่อย
ลืม PIN ผู้ดูแล
เปิด Apps Script › เลือกฟังก์ชัน resetAdminPin › กด เรียกใช้ › PIN ใหม่จะขึ้นในบันทึกการดำเนินการ (ทุกอุปกรณ์ต้องเข้าสู่ระบบใหม่) ฟังก์ชันนี้และ setup ใช้ได้เฉพาะเจ้าของสคริปต์จากหน้า Apps Script — ถ้ามีคนพยายามเรียกผ่านหน้าเว็บจะถูกปฏิเสธ
รัน setup แล้วขึ้น "ต้องเรียกใช้จากหน้า Apps Script โดยเจ้าของระบบเท่านั้น"
เปิด Apps Script ด้วยบัญชีเดียวกับเจ้าของไฟล์ชีต และตรวจว่าวาง appsscript.json แล้ว (ต้องมีสิทธิ์ userinfo.email) จากนั้นรันใหม่และกดอนุญาตสิทธิ์
เปิดลิงก์แล้วขึ้น "ไม่พบไฟล์ HTML ชื่อ Index"
ชื่อไฟล์ HTML ต้องเป็น Index ตรงตัวพิมพ์เล็ก-ใหญ่ เปลี่ยนชื่อแล้ว อัปเดตเวอร์ชัน
ขึ้น "ไม่พบชีต … กรุณารันฟังก์ชัน setup"
มีคนลบหรือเปลี่ยนชื่อชีต ให้รัน setup อีกครั้ง ระบบจะสร้างชีตที่หายไปให้ (ข้อมูลที่มีอยู่ไม่ถูกลบ)
กดสแกนแล้วกล้องไม่เปิด
เบราว์เซอร์ต้องได้รับสิทธิ์ใช้กล้อง: Android Chrome กดไอคอนแม่กุญแจข้างแถบที่อยู่ › สิทธิ์ › กล้อง · iPhone ไปที่ การตั้งค่า › Safari › กล้อง › อนุญาต ถ้ายังไม่ได้ ใช้ปุ่ม พิมพ์เลขครุภัณฑ์ แทน
แก้โค้ดแล้วหน้าเว็บไม่เปลี่ยน
ลิงก์ /exec ใช้เวอร์ชันที่ deploy ไว้ ต้อง อัปเดตเวอร์ชัน ทุกครั้งที่แก้โค้ด
อัปโหลดรูปไม่ได้
ตรวจว่ากดอนุญาตสิทธิ์ Google Drive ตอนรัน setup แล้ว ถ้าลบโฟลเดอร์ "รูปครุภัณฑ์" ไป ระบบจะสร้างใหม่ให้อัตโนมัติ
สิทธิ์ที่ระบบขอ และเหตุผล
| สิทธิ์ | ใช้ทำอะไร |
|---|---|
| ดูและแก้ไขไฟล์ Google Sheets | อ่าน/เขียนทะเบียน ประวัติ และผลตรวจนับในไฟล์ชีตของระบบ |
| ดู แก้ไข สร้าง และลบไฟล์ Google Drive | สร้างโฟลเดอร์ "รูปครุภัณฑ์" บันทึก/อ่าน/ลบรูปที่อัปโหลดผ่านระบบเท่านั้น (ไม่แชร์สาธารณะ ไม่แตะไฟล์อื่น) |
| จัดการทริกเกอร์และข้อมูลเว็บแอปของสคริปต์ | อ่านลิงก์เว็บแอป (ScriptApp.getService().getUrl()) เพื่อนำไปสร้าง QR |
| ดูอีเมลของคุณ | ตรวจว่าผู้เรียก setup / resetAdminPin คือเจ้าของระบบ (กันการเรียกผ่านหน้าเว็บ) |
ระบบไม่ขออ่าน Gmail หรือรายชื่อติดต่อ และไม่ส่งข้อมูลออกไปภายนอกบัญชีของคุณ (ยกเว้นโหลดฟอนต์/ไอคอน/ไลบรารีกราฟ ตัวสร้าง QR และตัวอ่าน QR จาก CDN สาธารณะ — QR สร้างและอ่านในเครื่องของคุณเอง)