Jabphap Recycle Buying คู่มือการติดตั้ง
⏱ ติดตั้งประมาณ 10–15 นาที · ไม่ต้องเขียนโค้ด

ติดตั้ง Recycle Buying บน Google ของร้านเอง

ระบบร้านรับซื้อของเก่า ชั่งซื้อ สต็อก ขายโรงงาน ทำงานบน Google Sheets + Google Apps Script ในบัญชี Google ของร้าน ไม่มีค่าบริการรายเดือน ใช้บนแท็บเล็ตหน้าตาชั่งได้

👤บัญชี Googleบัญชีของร้าน 1 บัญชี
📱แท็บเล็ต/มือถือวางข้างตาชั่ง (หรือคอมพิวเตอร์)
📄ไฟล์ 3 ไฟล์Code.gs · Index.html · appsscript.json
🧾เครื่องพิมพ์ (ไม่บังคับ)สลิป 80 มม. หรือ A4
📑 สารบัญ
ส่วนที่ 1

ติดตั้งบน Google

ทำครั้งเดียวบนคอมพิวเตอร์

1

เริ่มต้น

สร้างไฟล์ Google Sheets ใหม่

ไฟล์นี้คือ “ฐานข้อมูลร้าน” เก็บวัสดุ ราคา ใบรับซื้อ ผู้ขาย สต็อก การขายโรงงาน และเงินสด

  1. เข้า sheets.new ด้วยบัญชี Google ของกิจการ (ไม่ใช่บัญชีส่วนตัวของพนักงาน)
  2. ตั้งชื่อไฟล์ เช่น ร้านรับซื้อของเก่า — ฐานข้อมูล
⚠ ห้ามแชร์ไฟล์ชีตให้พนักงาน

ไฟล์มีเลขบัตรประชาชนผู้ขาย พนักงานใช้งานผ่านเว็บแอปด้วยบัญชีและ PIN ของตัวเองเท่านั้น ระบบปิดบังเลขบัตรและบันทึกการเปิดดูให้

2

ใส่ระบบ

วางไฟล์ Code.gs, Index.html และ appsscript.json

  1. ในไฟล์ชีต ไปที่ ส่วนขยาย›Apps Script (Extensions › Apps Script)
  2. ตั้งชื่อโปรเจกต์เป็น Jabphap Recycle Buying
  3. เปิดไฟล์ Code.gs กด Ctrl+A ลบโค้ดเดิม แล้ววางเนื้อหาไฟล์ Code.gs ที่ได้รับทั้งไฟล์
  4. กด + ข้างคำว่า “ไฟล์” › HTML ตั้งชื่อ Index (ไม่ต้องพิมพ์ .html) ลบเนื้อหาเดิม แล้ววางเนื้อหา Index.html
  5. ⚙ การตั้งค่าโปรเจกต์ › ติ๊ก แสดงไฟล์ Manifest “appsscript.json” ในเครื่องมือแก้ไข แล้วเปิด appsscript.json วางเนื้อหาจากไฟล์ที่ได้รับแทนทั้งหมด
  6. กด Ctrl+S บันทึก
✓ ตรวจชื่อไฟล์

ต้องมี Code.gs, Index.html, appsscript.json — ชื่อ Index ต้องตรงทุกตัวอักษร

⚠ วางให้ครบทั้งไฟล์

ถ้าคัดลอกไม่ครบจะขึ้น “SyntaxError” ตอนบันทึก ให้คัดลอกใหม่ทั้งไฟล์

3

สร้างฐานข้อมูล

รันฟังก์ชัน setup

  1. เลือกฟังก์ชัน setup ในแถบเครื่องมือด้านบน แล้วกด ▶ เรียกใช้ (Run)
  2. ครั้งแรก Google จะขออนุญาตสิทธิ์ ทำตามขั้นตอนที่ 4 แล้วรันอีกครั้งถ้าจำเป็น
  3. รอจนบันทึกการดำเนินการขึ้นว่า “ติดตั้ง Jabphap Recycle Buying เรียบร้อย”
สร้างชีต13 ชีตพร้อมหัวตาราง

Settings · Users · Materials · PriceLog · Sellers · Buyers · Tickets · Lots · StockAdj · CashMoves · DayClose · Counters · Audit

ข้อมูลตัวอย่างร้านรับซื้อจำลอง

วัสดุ 20 รายการพร้อมราคา ประวัติราคา 45 วัน ผู้ขาย 15 ราย โรงงาน 4 แห่ง ใบรับซื้อ 30 วัน ล็อตขายโรงงาน 8 ล็อต และปิดยอดรายวัน

ผู้ใช้admin + บัญชีตัวอย่าง

admin / 1234 · หัวหน้าลาน somsak · พนักงาน daeng, noi (PIN 1111)

หลังติดตั้ง ไฟล์ชีตจะมีเมนู ♻️ Recycle Buying ใช้รัน setup ซ้ำ (ไม่ลบข้อมูลเดิม) แสดงลิงก์เว็บแอป รีเซ็ต PIN ผู้ดูแล และล้างข้อมูลตัวอย่าง

4

ความปลอดภัย

อนุญาตสิทธิ์ให้สคริปต์

  1. หน้าต่าง “ต้องมีการให้สิทธิ์” กด ตรวจสอบสิทธิ์ แล้วเลือกบัญชีของคุณ
  2. หน้า “Google ยังไม่ได้ยืนยันแอปนี้” กด ขั้นสูง › ไปที่ Jabphap Recycle Buying (ไม่ปลอดภัย) — เป็นข้อความปกติของสคริปต์ที่ติดตั้งเอง
  3. ตรวจรายการสิทธิ์แล้วกด อนุญาต
หน้าต่างขออนุญาตสิทธิ์ของ Google Apps Script
หน้าต่างขอสิทธิ์ — กด “ตรวจสอบสิทธิ์” แล้วเลือกบัญชี (ชื่อโปรเจกต์ของคุณจะเป็น Jabphap Recycle Buying)
หน้าเตือน Google ยังไม่ได้ยืนยันแอป
คลิก “ขั้นสูง” แล้วเลือก “ไปที่ … (ไม่ปลอดภัย)”
สิทธิ์ที่ขอใช้ทำอะไร
ดู แก้ไข สร้าง สเปรดชีตอ่าน/เขียนวัสดุ ราคา ใบรับซื้อ ผู้ขาย สต็อก ในไฟล์ชีตนี้
ดู แก้ไข สร้าง ไฟล์ใน Google ไดรฟ์บันทึกใบรับซื้อ ใบส่งของ และทะเบียนรับซื้อเป็น PDF
แสดงเนื้อหาในแอป Googleเมนู ♻️ Recycle Buying บนไฟล์ชีต
5

เปิดให้ใช้งาน

เผยแพร่เป็นเว็บแอป

  1. มุมขวาบน กด การทำให้ใช้งานได้›การทำให้ใช้งานได้รายการใหม่
  2. กดรูปเฟือง ⚙ ข้าง “เลือกประเภท” › เว็บแอป
  3. เรียกใช้ในฐานะ = ฉัน · ผู้ที่มีสิทธิ์เข้าถึง = ทุกคน แล้วกด ทำให้ใช้งานได้
  4. คัดลอก URL ของเว็บแอป (ลงท้าย /exec) เก็บเป็นบุ๊กมาร์กที่เครื่องหน้าร้าน · ป้ายราคาทีวีใช้ URL เดียวกันต่อท้าย ?board=1
เมนูการทำให้ใช้งานได้รายการใหม่
เมนู Deploy › New deployment
เลือกประเภทเป็นเว็บแอป
กดรูปเฟืองแล้วเลือก “เว็บแอป”
ตั้งค่าเว็บแอป
เรียกใช้ในฐานะ “ฉัน” · ผู้มีสิทธิ์เข้าถึง “ทุกคน” — ผู้ใช้ไม่ต้องมีบัญชี Google แต่ต้องล็อกอินด้วยชื่อผู้ใช้และ PIN ของระบบ
URL ของเว็บแอป
คัดลอก URL ของเว็บแอป (ลงท้าย /exec)
⚠ ทำไมเลือก “ทุกคน” แล้วยังปลอดภัย

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

6

ใช้งานได้แล้ว

เข้าสู่ระบบครั้งแรกและเปลี่ยน PIN

  1. เปิด URL เว็บแอป ใส่ชื่อผู้ใช้ admin และ PIN 1234
  2. ระบบบังคับตั้ง PIN ใหม่ (ตัวเลข 4–8 หลัก ห้ามใช้ 1234 / 0000)
หน้าเข้าสู่ระบบ
หน้าเข้าสู่ระบบ — พนักงานแต่ละคนใช้ชื่อผู้ใช้และ PIN ของตัวเอง
💡 ลืม PIN ผู้ดูแล

เปิดไฟล์ชีต › เมนู ♻️ Recycle Buying › 🔑 รีเซ็ต PIN ผู้ดูแล (admin) เป็น 1234 ส่วนผู้ใช้คนอื่นให้เจ้าของรีเซ็ตในหน้าตั้งค่า › ผู้ใช้งาน

ส่วนที่ 2

ตั้งค่าก่อนใช้งานจริง

ทำผ่านเว็บแอปด้วยบัญชีเจ้าของร้าน

7

ข้อมูลร้าน

ข้อมูลร้านและเอกสาร

เมนู ตั้งค่า › ร้าน & เอกสาร: ชื่อร้าน ที่อยู่ เบอร์โทร เลขผู้เสียภาษี เลขที่ใบอนุญาตค้าของเก่า (พิมพ์บนใบรับซื้อและทะเบียน) อักษรนำเลขใบรับซื้อ/ใบขายออก (รันใหม่ทุกเดือน เช่น RB6910-0001) เงินทอนตั้งต้นปกติ และข้อความท้ายใบรับซื้อ

8

วัสดุ

ตรวจรายการวัสดุและตั้งราคาวันแรก

เมนู ราคาวันนี้ & วัสดุ (หัวหน้าลาน/เจ้าของ): ระบบมีวัสดุตัวอย่าง 20 รายการ แก้ชื่อ กลุ่ม หน่วย (กก./ชิ้น) สีปุ่ม ลำดับ หักสิ่งเจือปนเริ่มต้น และ ติดธง “ต้องบันทึกผู้ขาย” ได้ด้วยปุ่ม ✎ — ใส่ราคารับซื้อและราคาขายโรงงานในตาราง แล้วกด บันทึกราคา (ระบบเก็บประวัติทุกครั้งที่เปลี่ยน)

แก้ไขวัสดุ
แก้ไขวัสดุ “สายไฟ” — ติดธงต้องบันทึกผู้ขาย
9

กติกาหน้าตาชั่ง

กฎการรับซื้อ

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

ตั้งค่ากฎการรับซื้อ
กฎการรับซื้อ — ใช้ตรวจที่เซิร์ฟเวอร์ทุกบิล
10

ขายออก

เพิ่มโรงงาน/ผู้รับซื้อปลายทาง

เมนู ขายออกโรงงาน › โรงงาน/ผู้รับซื้อ: ชื่อ ผู้ติดต่อ เบอร์โทร เลขผู้เสียภาษี (พิมพ์บนใบส่งของ) และวัสดุที่รับ

11

ผู้ใช้

เพิ่มหัวหน้าลานและพนักงานหน้าตาชั่ง

สิทธิ์ทำอะไรได้
พนักงานหน้าตาชั่งชั่งซื้อ (ราคาประกาศ) ผู้ขาย ใบรับซื้อ สต็อก (ไม่เห็นต้นทุน/ราคาขาย) สรุปประจำวัน ค่าใช้จ่าย
หัวหน้าลาน+ ปรับราคา/วัสดุ ให้ราคาพิเศษในบิล ยกเลิกบิล ขายออกโรงงาน ปรับสต็อก นำเงินออก ปิดยอด เปิดดูเลขบัตรเต็ม
เจ้าของร้านทุกอย่าง + รายงานและตั้งค่า
ดูอีเมลหลักของบัญชี Googleตรวจว่าผู้รันฟังก์ชันผู้ดูแล (ติดตั้ง / รีเซ็ตรหัสผ่าน) เป็นเจ้าของไฟล์ — กันไม่ให้ผู้เปิดเว็บแอปเรียกใช้ได้
12

เริ่มใช้งานจริง

ป้ายราคา และล้างข้อมูลตัวอย่าง

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

อ้างอิง

โครงสร้างชีตในฐานข้อมูล

แก้ไขข้อมูลผ่านหน้าเว็บเท่านั้น ห้ามเปลี่ยนชื่อชีต หัวคอลัมน์ และคอลัมน์ 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 ป้องกันข้อมูลชนกัน เหมาะกับกิจการขนาดเล็ก–กลาง (ข้อมูลหลักหมื่นแถว)