📑 สารบัญ
ติดตั้งบน Google
ทำครั้งเดียวบนคอมพิวเตอร์
เริ่มต้น
สร้างไฟล์ Google Sheets ใหม่
ไฟล์นี้คือ “ฐานข้อมูลร้าน” เก็บวัสดุ ราคา ใบรับซื้อ ผู้ขาย สต็อก การขายโรงงาน และเงินสด
- เข้า sheets.new ด้วยบัญชี Google ของกิจการ (ไม่ใช่บัญชีส่วนตัวของพนักงาน)
- ตั้งชื่อไฟล์ เช่น ร้านรับซื้อของเก่า — ฐานข้อมูล
ไฟล์มีเลขบัตรประชาชนผู้ขาย พนักงานใช้งานผ่านเว็บแอปด้วยบัญชีและ PIN ของตัวเองเท่านั้น ระบบปิดบังเลขบัตรและบันทึกการเปิดดูให้
ใส่ระบบ
วางไฟล์ Code.gs, Index.html และ appsscript.json
- ในไฟล์ชีต ไปที่ ส่วนขยาย›Apps Script (Extensions › Apps Script)
- ตั้งชื่อโปรเจกต์เป็น Jabphap Recycle Buying
- เปิดไฟล์ Code.gs กด Ctrl+A ลบโค้ดเดิม แล้ววางเนื้อหาไฟล์
Code.gsที่ได้รับทั้งไฟล์ - กด + ข้างคำว่า “ไฟล์” › HTML ตั้งชื่อ
Index(ไม่ต้องพิมพ์ .html) ลบเนื้อหาเดิม แล้ววางเนื้อหาIndex.html - ⚙ การตั้งค่าโปรเจกต์ › ติ๊ก แสดงไฟล์ Manifest “appsscript.json” ในเครื่องมือแก้ไข แล้วเปิด
appsscript.jsonวางเนื้อหาจากไฟล์ที่ได้รับแทนทั้งหมด - กด Ctrl+S บันทึก
ต้องมี Code.gs, Index.html, appsscript.json — ชื่อ Index ต้องตรงทุกตัวอักษร
ถ้าคัดลอกไม่ครบจะขึ้น “SyntaxError” ตอนบันทึก ให้คัดลอกใหม่ทั้งไฟล์
สร้างฐานข้อมูล
รันฟังก์ชัน setup
- เลือกฟังก์ชัน setup ในแถบเครื่องมือด้านบน แล้วกด ▶ เรียกใช้ (Run)
- ครั้งแรก Google จะขออนุญาตสิทธิ์ ทำตามขั้นตอนที่ 4 แล้วรันอีกครั้งถ้าจำเป็น
- รอจนบันทึกการดำเนินการขึ้นว่า “ติดตั้ง Jabphap Recycle Buying เรียบร้อย”
Settings · Users · Materials · PriceLog · Sellers · Buyers · Tickets · Lots · StockAdj · CashMoves · DayClose · Counters · Audit
วัสดุ 20 รายการพร้อมราคา ประวัติราคา 45 วัน ผู้ขาย 15 ราย โรงงาน 4 แห่ง ใบรับซื้อ 30 วัน ล็อตขายโรงงาน 8 ล็อต และปิดยอดรายวัน
admin / 1234 · หัวหน้าลาน somsak · พนักงาน daeng, noi (PIN 1111)
หลังติดตั้ง ไฟล์ชีตจะมีเมนู ♻️ Recycle Buying ใช้รัน setup ซ้ำ (ไม่ลบข้อมูลเดิม) แสดงลิงก์เว็บแอป รีเซ็ต PIN ผู้ดูแล และล้างข้อมูลตัวอย่าง
ความปลอดภัย
อนุญาตสิทธิ์ให้สคริปต์
- หน้าต่าง “ต้องมีการให้สิทธิ์” กด ตรวจสอบสิทธิ์ แล้วเลือกบัญชีของคุณ
- หน้า “Google ยังไม่ได้ยืนยันแอปนี้” กด ขั้นสูง › ไปที่ Jabphap Recycle Buying (ไม่ปลอดภัย) — เป็นข้อความปกติของสคริปต์ที่ติดตั้งเอง
- ตรวจรายการสิทธิ์แล้วกด อนุญาต


| สิทธิ์ที่ขอ | ใช้ทำอะไร |
|---|---|
| ดู แก้ไข สร้าง สเปรดชีต | อ่าน/เขียนวัสดุ ราคา ใบรับซื้อ ผู้ขาย สต็อก ในไฟล์ชีตนี้ |
| ดู แก้ไข สร้าง ไฟล์ใน Google ไดรฟ์ | บันทึกใบรับซื้อ ใบส่งของ และทะเบียนรับซื้อเป็น PDF |
| แสดงเนื้อหาในแอป Google | เมนู ♻️ Recycle Buying บนไฟล์ชีต |
เปิดให้ใช้งาน
เผยแพร่เป็นเว็บแอป
- มุมขวาบน กด การทำให้ใช้งานได้›การทำให้ใช้งานได้รายการใหม่
- กดรูปเฟือง ⚙ ข้าง “เลือกประเภท” › เว็บแอป
- เรียกใช้ในฐานะ = ฉัน · ผู้ที่มีสิทธิ์เข้าถึง = ทุกคน แล้วกด ทำให้ใช้งานได้
- คัดลอก URL ของเว็บแอป (ลงท้าย
/exec) เก็บเป็นบุ๊กมาร์กที่เครื่องหน้าร้าน · ป้ายราคาทีวีใช้ URL เดียวกันต่อท้าย?board=1




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

เปิดไฟล์ชีต › เมนู ♻️ Recycle Buying › 🔑 รีเซ็ต PIN ผู้ดูแล (admin) เป็น 1234 ส่วนผู้ใช้คนอื่นให้เจ้าของรีเซ็ตในหน้าตั้งค่า › ผู้ใช้งาน
ตั้งค่าก่อนใช้งานจริง
ทำผ่านเว็บแอปด้วยบัญชีเจ้าของร้าน
ข้อมูลร้าน
ข้อมูลร้านและเอกสาร
เมนู ตั้งค่า › ร้าน & เอกสาร: ชื่อร้าน ที่อยู่ เบอร์โทร เลขผู้เสียภาษี เลขที่ใบอนุญาตค้าของเก่า (พิมพ์บนใบรับซื้อและทะเบียน) อักษรนำเลขใบรับซื้อ/ใบขายออก (รันใหม่ทุกเดือน เช่น RB6910-0001) เงินทอนตั้งต้นปกติ และข้อความท้ายใบรับซื้อ
วัสดุ
ตรวจรายการวัสดุและตั้งราคาวันแรก
เมนู ราคาวันนี้ & วัสดุ (หัวหน้าลาน/เจ้าของ): ระบบมีวัสดุตัวอย่าง 20 รายการ แก้ชื่อ กลุ่ม หน่วย (กก./ชิ้น) สีปุ่ม ลำดับ หักสิ่งเจือปนเริ่มต้น และ ติดธง “ต้องบันทึกผู้ขาย” ได้ด้วยปุ่ม ✎ — ใส่ราคารับซื้อและราคาขายโรงงานในตาราง แล้วกด บันทึกราคา (ระบบเก็บประวัติทุกครั้งที่เปลี่ยน)

กติกาหน้าตาชั่ง
กฎการรับซื้อ
เมนู ตั้งค่า › กฎการรับซื้อ: กลุ่มวัสดุ ความละเอียดตาชั่ง การปัดยอดจ่าย (ปัดเศษสตางค์ลง) อนุญาตให้พนักงานแก้ราคาในบิลภายใน ±% บังคับระบุผู้ขายทุกบิล บังคับชื่อ/บัตร/ทะเบียนรถสำหรับวัสดุติดธง และอนุญาตขายเกินสต็อกหรือไม่

ขายออก
เพิ่มโรงงาน/ผู้รับซื้อปลายทาง
เมนู ขายออกโรงงาน › โรงงาน/ผู้รับซื้อ: ชื่อ ผู้ติดต่อ เบอร์โทร เลขผู้เสียภาษี (พิมพ์บนใบส่งของ) และวัสดุที่รับ
ผู้ใช้
เพิ่มหัวหน้าลานและพนักงานหน้าตาชั่ง
| สิทธิ์ | ทำอะไรได้ |
|---|---|
| พนักงานหน้าตาชั่ง | ชั่งซื้อ (ราคาประกาศ) ผู้ขาย ใบรับซื้อ สต็อก (ไม่เห็นต้นทุน/ราคาขาย) สรุปประจำวัน ค่าใช้จ่าย |
| หัวหน้าลาน | + ปรับราคา/วัสดุ ให้ราคาพิเศษในบิล ยกเลิกบิล ขายออกโรงงาน ปรับสต็อก นำเงินออก ปิดยอด เปิดดูเลขบัตรเต็ม |
| เจ้าของร้าน | ทุกอย่าง + รายงานและตั้งค่า |
| ดูอีเมลหลักของบัญชี Google | ตรวจว่าผู้รันฟังก์ชันผู้ดูแล (ติดตั้ง / รีเซ็ตรหัสผ่าน) เป็นเจ้าของไฟล์ — กันไม่ให้ผู้เปิดเว็บแอปเรียกใช้ได้ |
เริ่มใช้งานจริง
ป้ายราคา และล้างข้อมูลตัวอย่าง
- เปิดไฟล์ชีต › เมนู ♻️ Recycle Buying › 🧹 ล้างข้อมูลตัวอย่าง — ลบใบรับซื้อ ผู้ขาย โรงงาน ล็อต สต็อก เงินสด ประวัติราคา และเลขที่เอกสาร เก็บรายการวัสดุ การตั้งค่า และผู้ดูแลไว้ (บัญชีตัวอย่างถูกลบ)
- ตั้งราคาวันแรก แล้วถ้ามีของค้างในลาน ใช้ สต็อกวัสดุ › ปรับสต็อก/ตรวจนับ ใส่น้ำหนักที่มีจริง
- เปิดป้ายราคาบนทีวีหน้าร้าน: URL เว็บแอป +
?board=1(กด F11 เต็มจอ)

สำคัญ
ข้อกฎหมายที่ควรทราบ
ร้านต้องได้รับอนุญาตและปฏิบัติตามกฎหมายว่าด้วยการค้าของเก่า ข้อบัญญัติท้องถิ่น และคำสั่งของเจ้าหน้าที่ในพื้นที่ด้วยตนเอง
- บันทึกผู้ขาย — หลายพื้นที่กำหนดให้ร้านรับซื้อจดชื่อ เลขบัตร และทะเบียนรถของผู้ขายวัสดุบางประเภท (เช่น สายไฟ ทองแดง ฝาท่อ) ระบบบังคับข้อมูลเหล่านี้สำหรับวัสดุที่ติดธง และพิมพ์ “ทะเบียนรับซื้อของเก่า” ให้เจ้าหน้าที่ตรวจได้
- ใบรับซื้อ มีข้อความให้ผู้ขายรับรองกรรมสิทธิ์และลงชื่อ ควรเก็บไว้ตามระยะเวลาที่ท้องถิ่นกำหนด
- PDPA — เก็บเลขบัตรเท่าที่จำเป็น บันทึกความยินยอม จำกัดผู้เห็นเลขเต็ม และไม่แชร์ไฟล์ชีต
อ้างอิง
โครงสร้างชีตในฐานข้อมูล
แก้ไขข้อมูลผ่านหน้าเว็บเท่านั้น ห้ามเปลี่ยนชื่อชีต หัวคอลัมน์ และคอลัมน์ id
| ชีต | เก็บอะไร | คอลัมน์สำคัญ |
|---|---|---|
| Materials | วัสดุ | code, name, grp, unit (kg/pc), buy_price, sell_price, deduct_pct, id_required, color, sort, active |
| PriceLog | ประวัติราคา | at, date, material_id, buy_price, sell_price |
| Sellers / Buyers | ผู้ขาย · โรงงาน | name, phone, id_card, plate, kind, consent_at · name, tax_id |
| Tickets | ใบรับซื้อ | no, seller_id, plate, lines (JSON), total_kg, total, pay_method, flagged, status |
| Lots | ขายออกโรงงาน | no, buyer_id, lines (kg_out, kg_paid, price, cost, margin), total, pay_status |
| StockAdj | ปรับสต็อก | material_id, kg (+/−), cost, reason |
| CashMoves / DayClose | เงินเข้า-ออก · ปิดยอด | type, method, amount · expected_cash, counted_cash, diff |
| Settings / Users / Counters / Audit | ตั้งค่า · ผู้ใช้ · เลขที่ · ประวัติ | role (admin/manager/staff) · เลขรันรายเดือน · บันทึกการใช้งาน |
ช่วยเหลือ
คำถามที่พบบ่อย
ผู้ขายเอาทองแดงมาแต่ไม่มีบัตร
ระบบไม่ให้บันทึก (ถ้าเปิดกฎบังคับไว้) ให้ผู้ขายนำบัตรประชาชนมา หรือเจ้าของปิดธงของวัสดุนั้นเองโดยรับผิดชอบตามกฎหมายท้องถิ่น
ชั่งผิด / จ่ายผิด
หัวหน้าลานเปิดใบรับซื้อ › ยกเลิก (ระบุเหตุผล) ระบบบันทึกเงินกลับและนำน้ำหนักออกจากสต็อก แล้วชั่งใหม่ — ยกเลิกได้จนกว่าจะปิดยอดของวันนั้น
โรงงานชั่งได้น้อยกว่าเรา
ตอนขายล็อตใส่ “ตัดสต็อก” = น้ำหนักที่ส่งออกจากลาน และ “โรงงานรับ” = น้ำหนักตามใบชั่งโรงงาน ระบบคิดเงินจากน้ำหนักที่โรงงานรับ และแสดงน้ำหนักหายในรายงาน
สต็อกในระบบไม่ตรงกับของจริง
ชั่ง/นับของจริงแล้วใช้ สต็อกวัสดุ › ปรับสต็อก/ตรวจนับ ใส่ “น้ำหนักที่นับได้” ระบบคำนวณส่วนต่างและบันทึกเหตุผล
เปิดลิงก์แล้วหน้าขาว / ไม่พบฟังก์ชัน doGet
วาง Code.gs ไม่ครบหรือไฟล์ HTML ไม่ได้ชื่อ Index แก้แล้ว Deploy เวอร์ชันใหม่
อัปเดตเป็นเวอร์ชันใหม่อย่างไร
วางทับ Code.gs และ Index.html รัน setup อีกครั้ง (ไม่ลบข้อมูลเดิม) แล้ว Deploy › จัดการการทำให้ใช้งานได้ › ✎ › เวอร์ชันใหม่ — URL เดิมใช้ต่อได้
ใช้พร้อมกันหลายเครื่องได้ไหม
ได้ ทุกการบันทึกใช้ LockService ป้องกันข้อมูลชนกัน เหมาะกับกิจการขนาดเล็ก–กลาง (ข้อมูลหลักหมื่นแถว)
ลิขสิทธิ์
ข้อกำหนดสิทธิ์การใช้งาน
Jabphap Recycle Buying สงวนลิขสิทธิ์ © 2569 (2026) jabphap.com · ผู้ซื้อได้รับสิทธิ์ใช้งานสำหรับกิจการของตนเองตามที่ระบุในการสั่งซื้อ ห้ามจำหน่าย แจกจ่าย หรือดัดแปลงเพื่อขายต่อ รายละเอียดดูไฟล์ LICENSE.txt