📑 สารบัญ
ติดตั้งบน Google
ทำครั้งเดียวบนคอมพิวเตอร์ ประมาณ 10 นาที
เริ่มต้น
สร้างไฟล์ Google Sheets ใหม่
ไฟล์นี้คือ “ฐานข้อมูล” ของระบบ เก็บลูกค้า สินค้า/บริการ เอกสาร (ใบเสนอราคา ใบแจ้งหนี้ ใบเสร็จ) การรับชำระ เลขที่เอกสารล่าสุด และการตั้งค่า
- เข้า sheets.new ด้วยบัญชี Google ที่จะเป็นเจ้าของระบบ (แนะนำบัญชีของบริษัท ไม่ใช่บัญชีส่วนตัวของพนักงาน)
- คลิกชื่อไฟล์มุมซ้ายบน ตั้งชื่อ เช่น เอกสารขาย บริษัทของเรา
ได้ แต่แนะนำไฟล์ใหม่เปล่า ๆ ระบบจะสร้างชีต Settings Users Customers Products Documents Payments Countersให้เอง และจะไม่แตะชีตอื่นที่มีอยู่
ใส่ระบบ
วางไฟล์ Code.gs, Index.html และ appsscript.json
- ในไฟล์ชีต ไปที่เมนู ส่วนขยาย›Apps Script (Extensions › Apps Script)
- ตั้งชื่อโปรเจกต์มุมซ้ายบนเป็น Jabphap Quotation & Invoice
- เปิดไฟล์ Code.gs ที่มีอยู่ กด Ctrl+A ลบโค้ดเดิม แล้ววางเนื้อหาจากไฟล์
Code.gsที่ได้รับทั้งไฟล์ - กดปุ่ม + ข้างคำว่า “ไฟล์” › HTML ตั้งชื่อว่า
Index(ตัว I ใหญ่ ไม่ต้องพิมพ์ .html) ลบเนื้อหาเดิม แล้ววางเนื้อหาจากIndex.html - ไปที่ ⚙ การตั้งค่าโปรเจกต์ ติ๊ก แสดงไฟล์ Manifest “appsscript.json” ในเครื่องมือแก้ไข กลับมาที่หน้าแก้ไข เปิด
appsscript.jsonแล้ววางเนื้อหาจากไฟล์ที่ได้รับแทนทั้งหมด - กด Ctrl+S บันทึกทุกไฟล์
ต้องมี 3 ไฟล์: Code.gs, Index.html, appsscript.json — ชื่อ Index ต้องตรงทุกตัวอักษร
ถ้าคัดลอกขาดท้ายไฟล์ จะเกิดข้อผิดพลาด “SyntaxError” ตอนบันทึก ให้คัดลอกใหม่ทั้งไฟล์
appsscript.json ทำหน้าที่อะไร
กำหนดเขตเวลา Asia/Bangkok (วันที่เอกสาร เลขที่รายเดือน และวันครบกำหนดใช้เวลาไทย) กำหนดสิทธิ์ที่ระบบขอใช้ (ชีต, เมนูในชีต, ทริกเกอร์, ส่งอีเมล, เรียก LINE API, Google Drive สำหรับบันทึกไฟล์ PDF) และตั้งค่าเว็บแอปให้ทำงานในนามเจ้าของ ผู้ใช้ล็อกอินด้วย PIN ภายในแอป
สร้างฐานข้อมูล
รันฟังก์ชัน setup
- ที่แถบเครื่องมือด้านบนของหน้าแก้ไขโค้ด เลือกฟังก์ชัน setup ในช่องรายการฟังก์ชัน
- กด ▶ เรียกใช้ (Run) — ครั้งแรก Google จะขออนุญาตสิทธิ์ ทำตามขั้นตอนที่ 4
- รอจนบันทึกการดำเนินการขึ้นว่า “ติดตั้ง Jabphap Quotation & Invoice เรียบร้อย”
Settings · Users · Customers · Products · Documents · Payments · Counters
ลูกค้า 9 ราย สินค้า/บริการ 14 รายการ เอกสาร 36 ใบ ย้อนหลัง 6 เดือน
อัปเดตสถานะเกินกำหนด และส่งรายการใบแจ้งหนี้เกินกำหนด (ปิดได้ในหน้าตั้งค่า)
หลังจากนี้ เมื่อเปิดไฟล์ชีตจะมีเมนู 🧾 Quotation & Invoice บนแถบเมนู ใช้ซ่อมฐานข้อมูล (รัน setup ซ้ำได้ ไม่ลบข้อมูลเดิม) แสดงลิงก์เว็บแอป รีเซ็ต PIN ผู้ดูแล และล้างข้อมูลตัวอย่าง
ความปลอดภัย
อนุญาตสิทธิ์ให้สคริปต์
- หน้าต่าง “ต้องมีการให้สิทธิ์” กด ตรวจสอบสิทธิ์ แล้วเลือกบัญชี Google ของคุณ
- ถ้าเจอหน้า “Google ยังไม่ได้ยืนยันแอปนี้” กด ขั้นสูง › ไปที่ Jabphap Quotation & Invoice (ไม่ปลอดภัย) — เป็นข้อความปกติของสคริปต์ที่คุณติดตั้งเอง
- ตรวจรายการสิทธิ์ แล้วกด อนุญาต จากนั้นกลับไปรัน setup อีกครั้งถ้ายังไม่ขึ้นข้อความติดตั้งเรียบร้อย


| สิทธิ์ที่ขอ | ใช้ทำอะไร |
|---|---|
| ดู แก้ไข สร้าง สเปรดชีต | อ่าน/เขียนลูกค้า สินค้า เอกสาร การรับชำระ ในไฟล์ชีตของคุณ |
| ดู แก้ไข สร้าง ไฟล์ใน Google ไดรฟ์ | สร้างโฟลเดอร์และบันทึกไฟล์ PDF ของเอกสาร |
| แสดงเนื้อหาในแอป Google | เมนู 🧾 Quotation & Invoice บนไฟล์ชีต |
| จัดการทริกเกอร์ | ตั้งเวลาตรวจและสรุปใบแจ้งหนี้เกินกำหนดทุกวัน |
| ส่งอีเมลในนามคุณ | ส่งเอกสาร PDF ถึงลูกค้า และส่งสรุปประจำวัน |
| เชื่อมต่อบริการภายนอก | ส่งข้อความเข้า LINE ผ่าน LINE Messaging API (ใช้เมื่อเปิดใช้เท่านั้น) |
| ดูอีเมลหลักของบัญชี Google | ตรวจว่าผู้รันฟังก์ชันผู้ดูแล (ติดตั้ง / รีเซ็ตรหัสผ่าน) เป็นเจ้าของไฟล์ — กันไม่ให้ผู้เปิดเว็บแอปเรียกใช้ได้ |
เปิดให้ทีมใช้
เผยแพร่เป็นเว็บแอป
- มุมขวาบนของหน้าแก้ไขโค้ด กด การทำให้ใช้งานได้›การทำให้ใช้งานได้รายการใหม่ (Deploy › New deployment)
- กดรูปเฟือง ⚙ ข้าง “เลือกประเภท” แล้วเลือก เว็บแอป
- ตั้งค่า: เรียกใช้ในฐานะ = ฉัน (อีเมลของคุณ) · ผู้ที่มีสิทธิ์เข้าถึง = ทุกคน แล้วกด ทำให้ใช้งานได้
- คัดลอก URL ของเว็บแอป (ลงท้ายด้วย
/exec) ส่งให้ผู้ใช้ทุกคน บันทึกเป็นบุ๊กมาร์กหรือ “เพิ่มไปยังหน้าจอหลัก” บนมือถือ




ข้อมูลไม่ได้เปิดเผยต่อสาธารณะ ทุกคนที่เปิดลิงก์จะเห็นแค่หน้าล็อกอิน ต้องมีชื่อผู้ใช้และ PIN ที่ผู้ดูแลสร้างให้ ระบบล็อกบัญชี 5 นาทีเมื่อใส่ PIN ผิด 5 ครั้ง และไฟล์ชีตยังเป็นของคุณคนเดียว (อย่าแชร์ไฟล์ชีตให้คนอื่นถ้าไม่จำเป็น)
ใช้งานได้แล้ว
เข้าสู่ระบบครั้งแรกและเปลี่ยน PIN
- เปิด URL เว็บแอป ใส่ชื่อผู้ใช้ admin และ PIN 1234
- ระบบจะบังคับตั้ง PIN ใหม่ทันที (ตัวเลข 4–8 หลัก ห้ามใช้ 1234 หรือ 0000)
- ไปที่ ตั้งค่า › ข้อมูลบริษัท กรอกชื่อบริษัท เลขผู้เสียภาษี ที่อยู่ บัญชีรับเงิน และผู้ลงนาม (ดูขั้นตอนที่ 7) — ข้อมูลนี้จะพิมพ์บนหัวเอกสารทุกใบ

เปิดไฟล์ชีต › เมนู 🧾 Quotation & Invoice › 🔑 รีเซ็ต PIN ผู้ดูแล (admin) เป็น 1234 แล้วเข้าสู่ระบบใหม่ ส่วนผู้ใช้คนอื่นที่ลืม PIN ให้ผู้ดูแลรีเซ็ตให้ในหน้าจัดการผู้ใช้
ตั้งค่าเอกสารของบริษัท
ทำหลังติดตั้งเสร็จ จากหน้าเว็บแอปด้วยบัญชีผู้ดูแล — เมนู ตั้งค่า
หัวเอกสาร
ข้อมูลบริษัท & โลโก้
- แท็บ ข้อมูลบริษัท: ชื่อบริษัท (ไทย/อังกฤษ) เลขประจำตัวผู้เสียภาษี 13 หลัก สำนักงานใหญ่/สาขา ที่อยู่ โทร อีเมล เว็บไซต์
- โลโก้ (ไม่บังคับ): อัปโหลดรูปไว้ใน Google Drive แชร์เป็น “ทุกคนที่มีลิงก์” แล้ววางลิงก์รูป หรือใช้ลิงก์รูปจากเว็บไซต์บริษัท (https://...png)
- สีหัวเอกสาร · ช่องทางการชำระเงิน (ธนาคาร เลขบัญชี พร้อมเพย์) · ชื่อและตำแหน่งผู้มีอำนาจลงนาม

เลขที่ & ภาษี
รูปแบบเลขที่เอกสาร & VAT
แท็บ เลขที่และเอกสาร: อักษรนำของแต่ละประเภท (ค่าเริ่มต้น QT / INV / RC) เริ่มเลขใหม่ทุกเดือนหรือทุกปี ใช้ปี ค.ศ. หรือ พ.ศ. และจำนวนหลักเลขรัน ระบบแสดงตัวอย่างเลขที่ถัดไปให้ทันที เช่น QT202610-0001 หรือ QT256910-0001
ตั้งชื่อหัวเอกสาร (เช่น เปลี่ยน “ใบเสร็จรับเงิน” เป็น “ใบเสร็จรับเงิน / ใบกำกับภาษี” เมื่อจดทะเบียน VAT) ไฟล์ PDF เริ่มต้น (ต้นฉบับ / ต้นฉบับ+สำเนา) ภาษีมูลค่าเพิ่มเริ่มต้น (ไม่คิด / ราคาไม่รวม VAT / ราคารวม VAT) อัตรา VAT หัก ณ ที่จ่ายเริ่มต้น อายุใบเสนอราคา เครดิตเทอม หมายเหตุและเงื่อนไขการชำระเงิน

เลขที่ออกตอนกดบันทึกภายใต้ LockService แม้หลายคนบันทึกพร้อมกันก็ไม่ซ้ำ เอกสารที่ยกเลิกยังคงเลขเดิมไว้ (ไม่นำกลับมาใช้) ตามหลักการทำบัญชี
ส่งเอกสาร
อีเมล PDF & การแจ้งเตือน
แท็บ อีเมลและแจ้งเตือน: แม่แบบหัวข้อและข้อความอีเมล ใช้ตัวแปร {doc_type} {doc_no} {doc_date} {customer} {company} {total} {sender} {phone} ได้ · สำเนาถึงตัวเองทุกครั้ง · สรุปใบแจ้งหนี้เกินกำหนดทุกเช้า (เวลา และผู้รับ) ทางอีเมลและ LINE

LINE Messaging API: สร้าง LINE Official Account ที่ manager.line.biz › เปิดใช้ Messaging API › ไปที่ LINE Developers Console ออก Channel access token (long-lived) มาวาง และใส่ User ID (U...) หรือ Group ID (C...) ของผู้รับ — token เก็บใน Script Properties ไม่อยู่ในชีต
บัญชี Gmail ทั่วไปส่งอีเมลจากสคริปต์ได้ประมาณ 100 ฉบับ/วัน (Google Workspace ประมาณ 1,500) ระบบแสดงจำนวนที่ส่งได้คงเหลือในหน้าต่างส่งอีเมล ไฟล์ PDF ถูกบันทึกในโฟลเดอร์ Drive ที่ระบบสร้างให้ครั้งแรก (ดูลิงก์โฟลเดอร์ได้ในหน้าตั้งค่า)
เริ่มใช้งานจริง
ผู้ใช้ & ล้างข้อมูลตัวอย่าง
ผู้ใช้: แท็บ ผู้ใช้งาน เพิ่มพนักงาน (สร้าง/แก้ไขเอกสาร ส่งอีเมล บันทึกรับชำระ) หรือผู้ดูแลระบบ (เพิ่มการตั้งค่าและผู้ใช้) — ครั้งแรกที่เข้าระบบจะถูกขอให้ตั้ง PIN ใหม่
ล้างข้อมูลตัวอย่าง: เปิดไฟล์ชีต › เมนู 🧾 Quotation & Invoice › 🧹 ล้างข้อมูลตัวอย่าง ระบบลบลูกค้า สินค้า เอกสาร การรับชำระ และรีเซ็ตเลขที่เอกสาร (ชีต Counters) แต่เก็บการตั้งค่าและผู้ใช้ไว้ — จากนั้นปิดบัญชีผู้ใช้ตัวอย่าง (kanokwan, piyapong) ไฟล์ PDF ตัวอย่างใน Drive (ถ้ามี) ลบเองได้
อัปเดตเวอร์ชัน: วางทับ Code.gs และ Index.html รัน setup อีกครั้ง แล้ว Deploy › จัดการการทำให้ใช้งานได้ › ✎ › เวอร์ชันใหม่
อ้างอิง
โครงสร้างชีตในฐานข้อมูล
แนะนำให้แก้ไขเอกสารผ่านหน้าเว็บเท่านั้น เพื่อให้ยอดเงิน เลขที่ และการอ้างอิงถูกต้อง ห้ามเปลี่ยนชื่อชีต หัวคอลัมน์ และคอลัมน์ id
| ชีต | เก็บอะไร | คอลัมน์สำคัญ |
|---|---|---|
| Settings | การตั้งค่า | company_*, logo_url, bank_info, signer_*, prefix_QT/INV/RC, number_reset, number_era, vat_rate, default_vat_mode, default_wht, email_subject/body, digest_* |
| Users | ผู้ใช้ | username, name, role (admin/staff), email, pin_hash + salt, active |
| Customers | ลูกค้า | code, name, tax_id, branch_type, branch_no, address, contact, phone, email, credit_days |
| Products | สินค้า/บริการ | code, name, unit, price, active |
| Documents | เอกสารทุกประเภท | type (QT/INV/RC), doc_no, doc_date, due_date, ข้อมูลลูกค้า ณ วันออกเอกสาร (cust_*), items (JSON), vat_mode, vat_rate, wht_rate, subtotal, vat_amount, total, wht_amount, net_total, paid_amount, balance, status, ref_no, pdf_url, sent_at |
| Payments | การรับชำระ | inv_no, pay_date, amount, wht, method, reference, receipt_no, status |
| Counters | เลขที่ล่าสุด | key (เช่น QT-202610), last |
ช่วยเหลือ
คำถามที่พบบ่อย
กด PDF แล้วขึ้นว่าไม่มีสิทธิ์ Google Drive
ตอนติดตั้งยังไม่ได้อนุญาตสิทธิ์ Drive ให้วาง appsscript.json ให้ครบ แล้วรัน setup อีกครั้งเพื่ออนุญาตสิทธิ์ใหม่
ฟอนต์ภาษาไทยใน PDF ไม่สวยเหมือนหน้าจอ
ไฟล์ PDF สร้างด้วยตัวแปลงของ Google ซึ่งใช้ฟอนต์ไทยมาตรฐาน ถ้าต้องการให้เหมือนหน้าจอทุกจุด ใช้ปุ่ม พิมพ์ แล้วเลือก “บันทึกเป็น PDF” ในหน้าต่างพิมพ์ของเบราว์เซอร์
ออกใบกำกับภาษีได้ไหม
ได้ เปลี่ยนชื่อหัวเอกสาร RC เป็น “ใบเสร็จรับเงิน / ใบกำกับภาษี” และกรอกเลขผู้เสียภาษี/สาขาของบริษัทและลูกค้าให้ครบ (ควรปรึกษาผู้ทำบัญชีเรื่องรูปแบบที่กรมสรรพากรกำหนด)
แก้ไขเอกสารที่ส่งไปแล้วได้ไหม
ใบเสนอราคาและใบแจ้งหนี้แก้ได้จนกว่าจะถูกแปลงเป็นเอกสารอื่นหรือมีการรับชำระ ส่วนใบเสร็จที่ออกแล้วแก้ไม่ได้ ถ้าต้องแก้ยอดให้ยกเลิกเอกสาร (ระบุเหตุผล — ต้องยกเลิกเอกสารที่อ้างอิงต่อก่อน) แล้วออกใบใหม่ เอกสารที่ยกเลิกยังเห็นในรายการพร้อมตราประทับ “ยกเลิก”
เปิดลิงก์แล้วขึ้น “ไม่พบฟังก์ชันสคริปต์: doGet” หรือหน้าขาว
วาง Code.gs ไม่ครบ หรือไฟล์ HTML ไม่ได้ชื่อ Index แก้แล้ว Deploy เวอร์ชันใหม่
ใช้พร้อมกันหลายคนได้ไหม
ได้ ทุกการบันทึกและการออกเลขที่ใช้ LockService เหมาะกับธุรกิจที่ออกเอกสารหลักพันใบต่อปี
ลิขสิทธิ์
ข้อกำหนดสิทธิ์การใช้งาน
Jabphap Quotation & Invoice สงวนลิขสิทธิ์ © 2569 (2026) jabphap.com · ผู้ซื้อได้รับสิทธิ์ใช้งานสำหรับกิจการของตนเองตามที่ระบุในการสั่งซื้อ ห้ามจำหน่าย แจกจ่าย หรือดัดแปลงเพื่อขายต่อ รายละเอียดดูไฟล์ LICENSE.txt