ข้อควรทราบ: ตัวเลขภาษีในระบบเป็นการประมาณการเพื่อวางแผน ไม่ใช่คำแนะนำทางภาษี ตรวจสอบกับกรมสรรพากรหรือผู้เชี่ยวชาญก่อนยื่นทุกครั้ง
สร้างไฟล์ Google Sheets ใหม่
- เปิด sheets.new (หรือ Google Drive › ใหม่ › Google ชีต) ด้วยบัญชีที่ต้องการเก็บข้อมูล
- ตั้งชื่อไฟล์ เช่น บัญชีฟรีแลนซ์ + ภาษี
เคล็ดลับ: ไฟล์นี้คือ "ฐานข้อมูล" ของระบบ ห้ามลบ และอย่าแชร์ให้ผู้อื่น เพราะมีข้อมูลรายได้ส่วนตัว
เปิด Apps Script จากไฟล์ชีต
- ในไฟล์ชีต กดเมนู ส่วนขยาย › Apps Script (Extensions › Apps Script)
- แท็บใหม่จะเปิดหน้าแก้ไขโค้ด ซึ่งมีไฟล์
Code.gsว่าง ๆ อยู่ 1 ไฟล์ - ตั้งชื่อโปรเจกต์ที่มุมซ้ายบน เช่น SheetDee Freelance Tax (ไม่บังคับ)
สำคัญ: ต้องเปิด Apps Script จากเมนูของไฟล์ชีต เท่านั้น เพื่อให้โค้ดผูกกับไฟล์นี้
วางไฟล์ทั้ง 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
- กดไอคอนเฟือง การตั้งค่าโปรเจกต์ ทางซ้าย › ติ๊ก แสดงไฟล์ Manifest "appsscript.json" ในเครื่องมือแก้ไข
- กลับไปที่ เครื่องมือแก้ไข (ไอคอน <>) เปิด
appsscript.jsonแล้ววางเนื้อหาจากไฟล์ทับทั้งหมด - กด Ctrl+S เพื่อบันทึก
ตรวจสอบ: ด้านซ้ายต้องมี 3 ไฟล์ appsscript.json · Code.gs · Index.html
รันฟังก์ชัน setup และอนุญาตสิทธิ์
- ที่แถบเครื่องมือด้านบน เลือกฟังก์ชัน
setupแล้วกด ▶ เรียกใช้ - ครั้งแรก Google จะขอสิทธิ์ กด ตรวจสอบสิทธิ์

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

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

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

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

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

ข้อมูลเข้าใช้งานครั้งแรก
| รายการ | ค่า |
|---|---|
| ลิงก์เข้าใช้งาน | URL ที่ได้จากขั้นตอนที่ 6 (ลงท้าย /exec) — บุ๊กมาร์กไว้ หรือ "เพิ่มไปยังหน้าจอหลัก" บนมือถือ |
| PIN | ตัวเลข 6 หลักจาก บันทึกการดำเนินการ ตอนรัน setup (ขั้นตอนที่ 5) — ไม่มี PIN ตั้งต้นตายตัว เปลี่ยนเป็นตัวที่จำง่าย (4–8 หลัก) ได้ที่ ตั้งค่า › เปลี่ยน PIN |
| ชื่อผู้ใช้ | ไม่มี — ใช้ PIN อย่างเดียว ระบบจำการเข้าสู่ระบบในเครื่องนั้น 30 วัน |
| ลืม PIN | Apps Script › เลือก resetAdminPin › เรียกใช้ › PIN ใหม่อยู่ในบันทึกการดำเนินการ |
| อีเมลรับการเตือน | ตั้งเป็นอีเมลเจ้าของสคริปต์ให้อัตโนมัติ แก้ได้ที่ ตั้งค่า |
| ข้อมูลตัวอย่าง | "ปลายฟ้า" กราฟิกดีไซเนอร์ฟรีแลนซ์ + ร้านสติกเกอร์ออนไลน์ (ชื่อสมมติทั้งหมด) — ล้างได้ที่ ตั้งค่า › เริ่มใช้งานจริง (พิมพ์ ลบทั้งหมด) |
- เปิด URL › ใส่ PIN
- ไปที่ ตั้งค่า ใส่ชื่อ ชื่อแบรนด์ ที่อยู่ และช่องทางรับเงิน (แสดงบนใบแจ้งหนี้)
- ลองเล่นกับข้อมูลตัวอย่าง แล้วกด ล้างข้อมูลตัวอย่าง เมื่อพร้อม — ระบบสร้างกระเป๋าเริ่มต้น 3 ใบ (งาน / ส่วนตัว / กันภาษี) ให้
- เพิ่ม ลูกค้า / แพลตฟอร์ม พร้อมประเภทเงินได้และ % หัก ณ ที่จ่ายตั้งต้น แล้วเริ่มบันทึกรายรับ
- กรอก ค่าลดหย่อน ของปีที่หน้า คำนวณภาษี › ค่าลดหย่อน


ปรับตัวเลขภาษีประจำปี
ค่าคงที่ทางภาษีทั้งหมดเก็บอยู่ในชีต "ตั้งค่าภาษี" (คอลัมน์ คีย์ / ค่า / หมวด / คำอธิบาย) — ไม่ต้องแก้โค้ด เมื่อกฎหมายเปลี่ยน ค่าเริ่มต้นอ้างอิงปีภาษี 2568–2569
- ต้นปีภาษีใหม่ (หรือเมื่อมีประกาศใหม่) ตรวจข้อมูลจากเว็บไซต์กรมสรรพากร rd.go.th
- ในเว็บแอป ไปที่ ตั้งค่า › ตั้งค่าภาษี › แก้ค่าภาษี (หรือแก้ในคอลัมน์ "ค่า" ของชีตโดยตรง — ห้ามแก้คอลัมน์คีย์)
- กด บันทึก — ทุกหน้าคำนวณใหม่ทันที · กด คืนค่าเริ่มต้น ได้ถ้าแก้ผิด

| หมวด | คีย์ตัวอย่าง | เมื่อไรควรแก้ |
|---|---|---|
| อัตราภาษี | br_1_upto … br_8_rate | เมื่อมีการปรับขั้นบันไดภาษี (ขั้นสุดท้าย br_8_upto = 0 คือไม่จำกัด) |
| วิธีที่ 2 | m2_min_income m2_rate m2_exempt | เกณฑ์ 120,000 / 0.5% / ยกเว้นไม่เกิน 5,000 |
| ค่าใช้จ่ายเหมา | exp_12_cap exp_6_rate exp_8_rate … | เช่น เป็นแพทย์ (ประกอบโรคศิลปะ) ตั้ง exp_6_rate = 60 · ค่าเช่าที่ดินเกษตรตั้ง exp_5_rate = 20 |
| ค่าลดหย่อน | allow_personal cap_life cap_esg cap_sso … | เพดานที่เปลี่ยนรายปี เช่น Thai ESG, SSF (ตั้ง 0 เพราะสิ้นสุดปี 2567), เพดานประกันสังคมตามฐานค่าจ้างของปีนั้น · มาตรการพิเศษรายปี (เช่น ช้อปลดหย่อน) ให้กรอกในช่อง "ลดหย่อนอื่น ๆ" |
| ภ.ง.ด.94 | h94_ratio h94_parents h94_min_income | วิธีประมาณค่าลดหย่อนครึ่งปี |
| กำหนดยื่น | due94_online due90_online | ทุกปี — กรมสรรพากรมักขยายเวลายื่นออนไลน์ (รูปแบบ เดือน-วัน เช่น 10-08) |
หมายเหตุ: ประเภทเงินได้ของแต่ละงาน (เช่น 40(2) หรือ 40(8)) ขึ้นกับลักษณะสัญญา ระบบไม่ตัดสินแทน — หากไม่แน่ใจ สอบถามกรมสรรพากร (โทร 1161) หรือผู้ทำบัญชี
การเตือนอีเมล
setup ตั้งทริกเกอร์ dailyCheck ให้ทำงานทุกวันเวลา 08:00 น. — ส่งอีเมล 1 ฉบับเฉพาะวันที่มีเรื่องใหม่: ใบแจ้งหนี้เลยกำหนด และใกล้กำหนดยื่น ภ.ง.ด.94 / ภ.ง.ด.90 (ค่าเริ่มต้น 30, 7, 1 วันก่อนกำหนดยื่นออนไลน์) แต่ละเรื่องแจ้งครั้งเดียว ไม่ส่งซ้ำ
- เปิด/ปิด และเปลี่ยนอีเมลได้ที่ ตั้งค่า · ปุ่ม ส่งอีเมลทดสอบ
- ตั้งเวลาใหม่: รัน
installDailyTrigger· ยกเลิก: รันremoveDailyTrigger(เฉพาะเจ้าของจากหน้า Apps Script) - ติ๊ก "ยื่นแล้ว" ที่หน้า ภาษี › ค่าลดหย่อน เพื่อหยุดเตือนแบบนั้น
อัปเดตเป็นเวอร์ชันใหม่ (ลิงก์เดิม)
- วาง
Code.gsและIndex.htmlเวอร์ชันใหม่ทับของเดิม แล้วบันทึก (ข้อมูลในชีตไม่หาย) - รัน
setupอีกครั้ง 1 ครั้ง — เพื่อเพิ่มคีย์ใหม่ในชีต "ตั้งค่าภาษี" (ค่าที่คุณแก้ไว้ไม่ถูกทับ) - กด การทำให้ใช้งานได้ › จัดการการทำให้ใช้งานได้ › ✏️ › เวอร์ชัน เวอร์ชันใหม่ › การทำให้ใช้งานได้
อย่ากด "การทำให้ใช้งานได้รายการใหม่" ซ้ำ เพราะจะได้ลิงก์ใหม่
ลืม PIN / แก้ปัญหาที่พบบ่อย
ลืม PIN
Apps Script › เลือกฟังก์ชัน resetAdminPin › เรียกใช้ › PIN ใหม่อยู่ในบันทึกการดำเนินการ (ทุกอุปกรณ์ต้องเข้าสู่ระบบใหม่)
ขึ้นข้อความ "ฟังก์ชันนี้ใช้ได้เฉพาะเจ้าของระบบ"
ต้องรันจากหน้า Apps Script ด้วยบัญชีเจ้าของสคริปต์ (บัญชีที่สร้างไฟล์) ไม่ใช่จากหน้าเว็บแอป — เป็นระบบป้องกันไม่ให้ผู้อื่นรีเซ็ต PIN
อัปโหลดใบ 50 ทวิ ไม่สำเร็จ
รองรับรูป PNG/JPG/WEBP/HEIC หรือ PDF ไม่เกิน 5 MB (รูปใหญ่ถูกย่อให้อัตโนมัติ) ถ้าเพิ่งอัปเดตเวอร์ชัน ให้รัน setup หนึ่งครั้งเพื่ออนุญาตสิทธิ์ Drive · หรือวางลิงก์ไฟล์ Drive ในช่องลิงก์แทน
ไม่ได้รับอีเมลเตือน
ตรวจ ตั้งค่า › อีเมล และติ๊กเปิดการเตือน · กด ส่งอีเมลทดสอบ · ดูในโฟลเดอร์สแปม · ตรวจว่ามีทริกเกอร์ dailyCheck ในเมนู ทริกเกอร์ (ไอคอนนาฬิกา) ถ้าไม่มีให้รัน installDailyTrigger
ขึ้น "ไม่พบชีต … กรุณารันฟังก์ชัน setup"
มีการลบหรือเปลี่ยนชื่อชีต ให้รัน setup อีกครั้ง ระบบจะสร้างชีตที่หายไป (ข้อมูลเดิมไม่ถูกลบ)
แก้โค้ดแล้วหน้าเว็บไม่เปลี่ยน
ลิงก์ /exec ใช้เวอร์ชันที่ deploy ไว้ ต้อง อัปเดตเวอร์ชัน ทุกครั้ง
สิทธิ์ที่ระบบขอ และเหตุผล
| สิทธิ์ | ใช้ทำอะไร |
|---|---|
| ดูและแก้ไขไฟล์ Google Sheets | อ่าน/เขียนข้อมูลในไฟล์ชีตของระบบ |
| ดู แก้ไข สร้าง และลบเฉพาะไฟล์ Google ไดรฟ์ที่ใช้กับแอปนี้ | สร้างโฟลเดอร์ "SheetDee Freelance Tax – หนังสือรับรอง 50 ทวิ" / "– ใบเสร็จรายจ่าย" และบันทึกไฟล์ที่คุณอัปโหลด (ไฟล์ส่วนตัว ไม่แชร์ · ไม่เห็นไฟล์อื่นใน Drive) |
| ส่งอีเมลในนามคุณ | ส่งอีเมลเตือนไปที่อีเมลที่คุณตั้งไว้เท่านั้น |
| ช่วยให้สคริปต์ทำงานเมื่อคุณไม่ได้ใช้งาน | ทริกเกอร์เตือนรายวัน 08:00 น. |
| ดูอีเมลของคุณ | ตรวจว่าผู้รัน setup / resetAdminPin คือเจ้าของจากหน้า Apps Script และใช้เป็นอีเมลรับการเตือนตั้งต้น |
ไม่มีการส่งข้อมูลออกนอกบัญชีของคุณ (ยกเว้นโหลดฟอนต์/ไอคอน/ไลบรารีกราฟจาก CDN สาธารณะ)
