สร้างไฟล์ Google Sheets ใหม่
- เปิด sheets.new (หรือ Google Drive › ใหม่ › Google ชีต) ด้วยบัญชีที่ต้องการเก็บข้อมูลและรับอีเมลเตือน
- ตั้งชื่อไฟล์ที่มุมซ้ายบน เช่น Due Reminder — ต่ออายุ & บิล
เคล็ดลับ: ไฟล์นี้คือ "ฐานข้อมูล" ของระบบ ห้ามลบ ย้ายไปโฟลเดอร์อื่นใน Drive ได้ตามสบาย
เปิด Apps Script จากไฟล์ชีต
- ในไฟล์ชีต กดเมนู ส่วนขยาย › Apps Script (ภาษาอังกฤษ: Extensions › Apps Script)
- แท็บใหม่จะเปิดหน้าแก้ไขโค้ด ซึ่งมีไฟล์
Code.gsว่าง ๆ อยู่ 1 ไฟล์ - ตั้งชื่อโปรเจกต์ที่มุมซ้ายบน (เช่น Due Reminder) — ชื่อนี้จะแสดงในหน้าขอสิทธิ์
สำคัญ: ต้องเปิด 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 ตรงตัว หน้าเว็บจะเปิดไม่ขึ้น · ไฟล์ appsscript.json กำหนดเขตเวลาเป็น Asia/Bangkok เพื่อให้นับวันครบกำหนดตามเวลาไทย
รันฟังก์ชัน setup และอนุญาตสิทธิ์
- ที่แถบเครื่องมือด้านบน เลือกฟังก์ชัน
setupจากรายการ แล้วกด ▶ เรียกใช้ (Run) - ครั้งแรก Google จะขอสิทธิ์ กด ตรวจสอบสิทธิ์ (Review permissions)

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

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

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

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

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

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


เริ่มใช้จริง: เมื่อลองเล่นพอแล้ว ไปที่หน้า ตั้งค่า › ล้างข้อมูลทั้งหมด แล้วเพิ่มรายการของคุณเอง
เปิดการแจ้งเตือนอัตโนมัติ (ทริกเกอร์)
การส่งอีเมลเตือนต้องมี ทริกเกอร์ตั้งเวลา ให้ Google รันสคริปต์ทุกวัน ขั้นตอนนี้ทำครั้งเดียว
- ในเว็บแอป ไปที่หน้า ตั้งค่า & แจ้งเตือน ตรวจ ส่งอีเมลถึง ระยะเตือน (ค่าเริ่มต้น 30 / 7 / 1 วัน + วันครบกำหนด) และ เวลาส่งอีเมลสรุป แล้วกด บันทึกการตั้งค่า
- กด เปิดการแจ้งเตือนอัตโนมัติ ป้ายมุมขวาจะเปลี่ยนเป็น ● เปิดอยู่
- กด ส่งอีเมลทดสอบ แล้วเปิดกล่องจดหมาย (ถ้าไม่เจอ ดูในสแปม/โปรโมชัน แล้วกด "ไม่ใช่สแปม")
- (ไม่บังคับ) เปิดสวิตช์ Google Calendar แล้วกด บันทึก & ซิงก์ปฏิทิน เพื่อเพิ่มวันครบกำหนดลงปฏิทินพร้อมแจ้งเตือนบนมือถือ

อีกวิธี: ใน Apps Script เลือกฟังก์ชัน installTrigger › เรียกใช้ ได้ผลเหมือนกัน ตรวจได้ที่เมนูซ้าย ทริกเกอร์ (ไอคอนนาฬิกา) ต้องมี dailyReminder · ตามเวลา · ตัวจับเวลารายวัน 1 รายการ
อย่าสร้างทริกเกอร์ซ้ำเอง: ปุ่มในเว็บแอปลบของเก่าก่อนสร้างใหม่ทุกครั้ง แต่ถ้าเพิ่มด้วยมือในหน้าทริกเกอร์อาจเกิดซ้ำ (ระบบกันส่งซ้ำวันเดียวกันไว้แล้ว แต่ควรมีอันเดียว)
อัปเดตเป็นเวอร์ชันใหม่ (ลิงก์เดิม)
- วางโค้ด
Code.gsและIndex.htmlเวอร์ชันใหม่ทับของเดิม แล้วบันทึก (ข้อมูลในชีตไม่หาย ทริกเกอร์ยังทำงานต่อ) - กด การทำให้ใช้งานได้ › จัดการการทำให้ใช้งานได้ › ไอคอนดินสอ ✏️
- ช่อง เวอร์ชัน เลือก เวอร์ชันใหม่ แล้วกด การทำให้ใช้งานได้
อย่ากด "การทำให้ใช้งานได้รายการใหม่" ซ้ำ เพราะจะได้ลิงก์ใหม่
ลืม PIN / แก้ปัญหาที่พบบ่อย
ลืม PIN ผู้ดูแล
เปิด Apps Script › เลือกฟังก์ชัน resetAdminPin › กด เรียกใช้ › PIN ใหม่จะขึ้นในบันทึกการดำเนินการ (ทุกอุปกรณ์ต้องเข้าสู่ระบบใหม่)
ไม่ได้รับอีเมลเตือน
ดูหน้า ตั้งค่า ว่าทริกเกอร์ "● เปิดอยู่" และดูประวัติการส่งอีเมล ระบบส่งเฉพาะวันที่มีรายการถึงระยะเตือน ถ้าใน Apps Script › การดำเนินการ มีข้อผิดพลาด "ต้องได้รับอนุญาต" ให้รัน setup อีกครั้งเพื่ออนุญาตสิทธิ์ใหม่
ขึ้น "ฟังก์ชันนี้ต้องรันจากหน้า Apps Script โดยเจ้าของไฟล์เท่านั้น"
setup, resetAdminPin และ installTrigger ต้องรันในหน้าแก้ไขโค้ดด้วยบัญชีเจ้าของไฟล์ (บัญชีที่ล็อกอินอยู่ต้องตรงกับเจ้าของ) เพื่อกันคนอื่นเรียกผ่านเว็บแอป
เพิ่มลงปฏิทินไม่สำเร็จ
ตรวจ "รหัสปฏิทิน" (เว้นว่างเพื่อใช้ปฏิทินหลัก) และต้องเป็นปฏิทินที่บัญชีนี้มีสิทธิ์แก้ไข ถ้าเพิ่งเพิ่มสิทธิ์ปฏิทินในเวอร์ชันใหม่ ให้รัน setup เพื่ออนุญาตสิทธิ์อีกครั้ง
เปิดลิงก์แล้วขึ้น "ไม่พบไฟล์ HTML ชื่อ Index"
ชื่อไฟล์ HTML ต้องเป็น Index ตรงตัวพิมพ์เล็ก-ใหญ่ เปลี่ยนชื่อแล้ว อัปเดตเวอร์ชัน
ขึ้น "ไม่พบชีต … กรุณารันฟังก์ชัน setup"
มีคนลบหรือเปลี่ยนชื่อชีต ให้รัน setup อีกครั้ง ระบบจะสร้างชีตที่หายไปให้ (ข้อมูลที่มีอยู่ไม่ถูกลบ)
แก้โค้ดแล้วหน้าเว็บไม่เปลี่ยน
ลิงก์ /exec ใช้เวอร์ชันที่ deploy ไว้ ต้อง อัปเดตเวอร์ชัน ทุกครั้งที่แก้โค้ด
เปิดบนมือถือแล้วขึ้นหน้าล็อกอิน Google หรือ "ไม่มีสิทธิ์"
ตรวจว่าตั้ง ผู้มีสิทธิ์เข้าถึง = ทุกคน (ดูขั้นตอนที่ 6) หากแก้ภายหลังต้องอัปเดตเวอร์ชัน
สิทธิ์ที่ระบบขอ และเหตุผล
| สิทธิ์ (scope) | ใช้ทำอะไร |
|---|---|
ดูและแก้ไขไฟล์ Google Sheetsauth/spreadsheets | อ่าน/เขียนข้อมูลในไฟล์ชีตของระบบ (ไฟล์ที่คุณติดตั้งเท่านั้นที่โค้ดเปิดใช้) |
ส่งอีเมลในนามของคุณauth/script.send_mail | ส่งอีเมลสรุปรายการใกล้ครบกำหนด (ส่งถึงอีเมลที่ตั้งไว้เท่านั้น) |
จัดการทริกเกอร์ของสคริปต์auth/script.scriptapp | สร้าง/ลบทริกเกอร์ตั้งเวลารายวัน และใส่ลิงก์เว็บแอปในอีเมล |
Google Calendarauth/calendar | เพิ่ม/ย้าย/ลบนัดหมายวันครบกำหนดที่ระบบสร้าง (เฉพาะเมื่อเปิดตัวเลือกปฏิทิน) |
ดูอีเมลหลักของบัญชีauth/userinfo.email | ใส่อีเมลของคุณเป็นค่าเริ่มต้น และยืนยันว่าฟังก์ชันติดตั้งถูกรันโดยเจ้าของไฟล์ |
ระบบไม่ขอสิทธิ์อ่าน Gmail, Drive ทั้งหมด หรือรายชื่อติดต่อ ลิงก์ไฟล์แนบเป็นเพียงข้อความที่คุณวางเอง (ระบบไม่เปิดอ่านไฟล์) และไม่มีการส่งข้อมูลออกไปภายนอกบัญชีของคุณ (ยกเว้นโหลดฟอนต์/ไอคอนจาก CDN สาธารณะ)
