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

ติดตั้ง Jabphap LINE Points

บัตรสมาชิกสะสมแต้มผ่าน LINE OA สมัครในแชท พนักงานเพิ่มแต้มจากหน้าเว็บ แลกรางวัลด้วยคูปอง — ทำงานบน Google Sheets และ Apps Script ในบัญชี Google ของคุณเอง ใช้ LINE OA ของร้านเอง ไม่มีค่ารายเดือน ไม่ต้องเช่าเซิร์ฟเวอร์

👤บัญชี GoogleGmail หรือ Google Workspace
💻คอมพิวเตอร์ใช้ตอนติดตั้งครั้งแรก
📄3 ไฟล์Code.gs · Index.html · appsscript.json
💬LINE Official Accountสมัครฟรีที่ LINE OA Manager แล้วเปิด Messaging API
📑 สารบัญ
1

เริ่มต้น

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

ไฟล์นี้คือฐานข้อมูลของระบบ เก็บสมาชิก ประวัติแต้ม ของรางวัล คูปอง และบันทึกการคุยกับบอท

  1. เข้า sheets.new ด้วยบัญชี Google ที่จะใช้งานจริง (แนะนำบัญชีของร้าน ไม่ใช่บัญชีส่วนตัวพนักงาน)
  2. คลิกชื่อไฟล์มุมซ้ายบน แล้วตั้งชื่อ เช่น บัตรสมาชิก ร้านของฉัน — LINE Points
2

ใส่ระบบ

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

ชุดไฟล์ที่ได้รับมี 3 ไฟล์หลักที่ต้องวาง (โฟลเดอร์ tools และ GUIDE ไม่ต้องอัปโหลด)

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

Code.gs เรียกหน้าเว็บจากไฟล์ชื่อ Index ถ้าสะกดต่างไป หน้าเว็บจะเปิดไม่ขึ้น

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

เลื่อนดูบรรทัดสุดท้ายของ Code.gs และ Index.html ว่าวางครบ (Index.html ลงท้ายด้วย </html>)

appsscript.json ทำอะไร และระบบขอสิทธิ์อะไรบ้าง

กำหนดเขตเวลา Asia/Bangkok และระบุสิทธิ์ที่ใช้จริงเท่านั้น:

ดู แก้ไข สร้างสเปรดชีตบันทึกสมาชิกและแต้มในไฟล์ชีตของคุณ
เชื่อมต่อบริการภายนอกตอบแชทและแจ้งแต้มผ่าน LINE Messaging API
จัดการทริกเกอร์ตัดแต้มหมดอายุและเตือนล่วงหน้าทุกวัน 9:00 น.
แสดงเมนูในชีตเมนู Jabphap LINE Points ในไฟล์ชีต
ดูอีเมลหลักของบัญชี Googleตรวจว่าผู้รันฟังก์ชันผู้ดูแล (ติดตั้ง / รีเซ็ตรหัสผ่าน) เป็นเจ้าของไฟล์ — กันไม่ให้ผู้เปิดเว็บแอปเรียกใช้ได้
3

ทำครั้งเดียว

รันฟังก์ชัน setup เพื่อสร้างชีต

  1. ในหน้าแก้ไข Code.gs เลือกฟังก์ชัน setup จากรายการด้านบน แล้วกด ▶ เรียกใช้
  2. ครั้งแรก Google จะขออนุญาตสิทธิ์ — ทำตามขั้นที่ 4 แล้วกดเรียกใช้ setup อีกครั้ง
  3. เมื่อเสร็จ ดู บันทึกการดำเนินการ (Execution log) ด้านล่าง จะขึ้นข้อความ “ติดตั้ง Jabphap LINE Points เรียบร้อย”

ระบบจะสร้างชีตเหล่านี้ให้อัตโนมัติ (พร้อมข้อมูลตัวอย่างให้ลองใช้):

ชีตเก็บอะไร
สมาชิกรหัสสมาชิก LINE user ชื่อ เบอร์ ระดับ แต้มคงเหลือ แต้มสะสมรวม ยอดซื้อ
ประวัติแต้มทุกการสะสม/แลก/ปรับ/หมดอายุ พร้อมวันหมดอายุและแต้มคงเหลือของแต่ละรายการ
ของรางวัลของรางวัลตัวอย่าง 4 รายการ (แก้ไขได้)
การแลกรางวัลคูปองที่ออก สถานะ วันหมดอายุ
บันทึกบอทข้อความเข้า-ออกกับบอท (เก็บล่าสุด ~15,000 แถว)
🔑 จดรหัสตั้งค่าครั้งแรก 6 หลัก

ใน Execution log จะมีข้อความ รหัสตั้งค่าครั้งแรก: 123456 ใช้รหัสนี้ตอนเปิดเว็บแอปครั้งแรกเพื่อตั้งรหัสผ่านผู้ดูแล (ลืมรหัสผ่านภายหลัง ให้รันฟังก์ชัน resetAdminPassword เพื่อรับรหัสใหม่)

✓ รัน setup ซ้ำได้

ถ้าเผลอลบชีตหรือทริกเกอร์ หรืออัปเดตเวอร์ชันใหม่ ให้รัน setup อีกครั้ง ระบบจะสร้างเฉพาะส่วนที่ขาด ข้อมูลเดิมไม่หาย

4

ทำครั้งเดียว

อนุญาตสิทธิ์ให้ระบบ

เป็นเรื่องปกติของสคริปต์ที่ติดตั้งเองในบัญชีของคุณ ข้อมูลไม่ได้ถูกส่งไปที่อื่นนอกจาก LINE

4.1 กด ตรวจสอบสิทธิ์ แล้วเลือกบัญชี Google ของคุณ
4.1 กด ตรวจสอบสิทธิ์ แล้วเลือกบัญชี Google ของคุณ
4.2 เจอ “Google ยังไม่ได้ยืนยันแอปนี้” ให้กด ขั้นสูง แล้วกด ไปที่ Jabphap LINE Points (ไม่ปลอดภัย) จากนั้นกด อนุญาต / ดำเนินการต่อ
4.2 เจอ “Google ยังไม่ได้ยืนยันแอปนี้” ให้กด ขั้นสูง แล้วกด ไปที่ Jabphap LINE Points (ไม่ปลอดภัย) จากนั้นกด อนุญาต / ดำเนินการต่อ
🔐 ทำไมขึ้นว่า “ไม่ปลอดภัย”?

เพราะสคริปต์เป็นของคุณเองและไม่ได้ส่งให้ Google ตรวจรับรอง สคริปต์ทำงานในบัญชีของคุณเท่านั้น

5

เปิดใช้งาน

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

  1. มุมขวาบน กด ทำให้ใช้งานได้›การทำให้ใช้งานได้รายการใหม่
  2. กดรูปเฟือง ⚙ เลือก เว็บแอป
  3. ตั้งค่า เรียกใช้ในฐานะ: ฉัน และ ผู้มีสิทธิ์เข้าถึง: ทุกคน แล้วกด ทำให้ใช้งานได้
  4. คัดลอก URL ของเว็บแอป (ลงท้ายด้วย /exec) เก็บไว้ หรือบุ๊กมาร์กในมือถือ
5.1 ทำให้ใช้งานได้ › การทำให้ใช้งานได้รายการใหม่
5.1 ทำให้ใช้งานได้ › การทำให้ใช้งานได้รายการใหม่
5.2 เลือกประเภท เว็บแอป
5.2 เลือกประเภท เว็บแอป
5.3 ตั้งค่าผู้เรียกใช้และผู้มีสิทธิ์เข้าถึง แล้วกด ทำให้ใช้งานได้
5.3 ตั้งค่าผู้เรียกใช้และผู้มีสิทธิ์เข้าถึง แล้วกด ทำให้ใช้งานได้
5.4 คัดลอก URL ของเว็บแอป — ในภาพเป็นตัวอย่างจากโปรเจกต์อื่น URL ของคุณจะต่างออกไป
5.4 คัดลอก URL ของเว็บแอป — ในภาพเป็นตัวอย่างจากโปรเจกต์อื่น URL ของคุณจะต่างออกไป
⚠ ต้องเลือก “ทุกคน”

LINE ส่ง Webhook (ข้อความแชต การเพิ่มเพื่อน การกดปุ่ม) มาที่ URL นี้โดยไม่ได้ล็อกอิน Google ถ้าเลือกอย่างอื่น บอทจะไม่ตอบ หน้าจัดการทั้งหมดยังป้องกันด้วยรหัสผ่านผู้ดูแล และ Webhook ป้องกันด้วยรหัสลับใน URL

6

LINE

สร้าง LINE OA และเปิด Messaging API

  1. สร้าง LINE Official Account ที่ manager.line.biz (แพ็กเกจฟรีใช้ได้) หรือใช้ OA เดิมของร้าน
  2. ใน LINE OA Manager ไปที่ ตั้งค่า›Messaging API กด เปิดใช้ Messaging API เลือก/สร้าง Provider
  3. ไปที่ ตั้งค่า›การตอบกลับ ปิด ข้อความตอบกลับอัตโนมัติ และ ข้อความทักทาย ของ LINE (ให้ระบบนี้ตอบแทน) และเปิด Webhook
  4. เข้า LINE Developers Console › เลือก Channel › แท็บ Messaging API › เลื่อนลงไปที่ Channel access token (long-lived) กด Issue แล้วคัดลอก
💡 Channel secret ไม่ต้องใช้

Apps Script อ่านส่วนหัว X-Line-Signature ไม่ได้ ระบบจึงป้องกัน Webhook ปลอมด้วย รหัสลับใน URL (?key=...) และกันเหตุการณ์ซ้ำด้วย webhookEventId แทน — ใส่เฉพาะ Channel access token ก็พอ

7

ใช้งานครั้งแรก

เชื่อมต่อ LINE และตั้งค่า Webhook

  1. เปิด URL เว็บแอป กรอก รหัสตั้งค่าครั้งแรก จาก Execution log แล้วตั้งรหัสผ่านผู้ดูแล
  2. ไปที่เมนู ตั้งค่า LINE วาง Channel access token แล้วกด บันทึกและทดสอบ — จะขึ้นชื่อ OA และโควตาข้อความของเดือน
  3. กดปุ่มคัดลอก Webhook URL (ลงท้ายด้วย /exec?key=...) ไปวางที่ LINE Developers › Messaging API › Webhook settings › Edit › Update แล้วเปิดสวิตช์ Use webhook
  4. ทดสอบ: ใช้มือถือเพิ่ม OA เป็นเพื่อน แล้วพิมพ์ สมัครสมาชิก แล้วทำตามขั้นตอนจนได้บัตร — บอทต้องตอบกลับ และหน้า ตั้งค่า LINE จะแสดง “Webhook ล่าสุด” เป็นเวลาปัจจุบัน
  5. ตั้งกติกาแต้ม ระดับสมาชิก และ PIN พนักงาน ในหน้าตั้งค่า แก้ของรางวัลตัวอย่างให้เป็นของร้านคุณ
  6. ทำป้าย “สมัครสมาชิก รับ 50 แต้ม” พร้อม QR เพิ่มเพื่อน OA ติดที่เคาน์เตอร์ (สร้าง QR ได้ใน LINE OA Manager)
หน้าเข้าสู่ระบบผู้ดูแล (ครั้งแรกจะขอรหัสตั้งค่า 6 หลักเพื่อตั้งรหัสผ่าน)
หน้าเข้าสู่ระบบผู้ดูแล (ครั้งแรกจะขอรหัสตั้งค่า 6 หลักเพื่อตั้งรหัสผ่าน)
⚠ ปุ่ม Verify ขึ้น error — เป็นเรื่องปกติ

เมื่อกด Verify ใน LINE Developers อาจขึ้นว่า The webhook returned an HTTP status code other than 200 (302 Found) เพราะ Apps Script ตอบทุกคำขอด้วยการเปลี่ยนเส้นทาง (redirect) แต่ สคริปต์ได้รับและประมวลผลเหตุการณ์แล้ว ข้อความจริงจากผู้ใช้จะเข้าครบ ให้ทดสอบด้วยการทักแชทจากมือถือตามข้อ 4 แทน (อย่าเปิด “Webhook redelivery” เพราะ LINE จะส่งซ้ำ — แม้ระบบจะกันซ้ำให้ก็ตาม)

✓ ทดลองได้ก่อนเชื่อม LINE

เมนู ทดลองแชท ในเว็บแอปจำลองการคุยกับบอทได้ทันที (ไม่ส่งจริง ไม่เสียโควตา) เหมาะสำหรับเช็คข้อความก่อนเปิดใช้จริง

8

ดูแลระบบ

อัปเดตเวอร์ชันใหม่

  1. วาง Code.gs และ Index.html เวอร์ชันใหม่ทับของเดิม แล้วบันทึก
  2. รันฟังก์ชัน setup อีกครั้ง (เพิ่มคอลัมน์/ชีตใหม่ถ้ามี ข้อมูลเดิมไม่หาย)
  3. ไปที่ ทำให้ใช้งานได้›จัดการการทำให้ใช้งานได้ กดแก้ไข ✏ เลือก เวอร์ชัน: เวอร์ชันใหม่ แล้วกด ทำให้ใช้งานได้ — URL เดิมและ Webhook เดิมใช้ต่อได้ (ถ้าสร้าง “การทำให้ใช้งานได้รายการใหม่” จะได้ URL ใหม่ ต้องไปเปลี่ยน Webhook ใน LINE ด้วย)

ช่วยเหลือ

คำถามที่พบบ่อย

บอทไม่ตอบเลย

ตรวจตามลำดับ: (1) หน้า ตั้งค่า LINE เชื่อมต่อแล้ว (2) Webhook URL ใน LINE Developers ตรงกับในหน้าตั้งค่า รวม ?key= และเปิด Use webhook (3) เว็บแอปเผยแพร่แบบ “ทุกคน” (4) ถ้าแก้โค้ดต้องทำให้ใช้งานได้เป็น เวอร์ชันใหม่ (5) ดู “Webhook ล่าสุด” ว่ามีเวลาอัปเดตหรือไม่ ถ้าไม่มีแปลว่า LINE ส่งมาไม่ถึง

ขึ้น “Channel access token ไม่ถูกต้อง”

ออก token ใหม่ใน LINE Developers (long-lived) แล้ววางใหม่ ระวังเว้นวรรคหรือขึ้นบรรทัดใหม่ติดมา

บอทตอบซ้ำกับข้อความอัตโนมัติของ LINE

ปิด “ข้อความตอบกลับอัตโนมัติ” และ “ข้อความทักทาย” ใน LINE OA Manager › ตั้งค่า › การตอบกลับ

โควตาข้อความคืออะไร

แพ็กเกจฟรีของ LINE OA ส่งข้อความแบบ push/multicast ได้ประมาณ 300 ข้อความ/เดือน (นับตามจำนวนผู้รับ) การ ตอบกลับ (reply) ทันทีหลังลูกค้าทักไม่นับโควตา ดูยอดใช้ได้ที่หน้า ภาพรวม / ตั้งค่า LINE

QR บนบัตรสร้างจากที่ไหน

รูป QR สร้างจากบริการ api.qrserver.com โดยใส่เฉพาะรหัสสมาชิก (เช่น M00012) ไม่มีข้อมูลส่วนตัวอื่น

สแกน QR ที่ร้านอย่างไร

ใช้เครื่องอ่านบาร์โค้ด/QR แบบ USB หรือ Bluetooth ที่ทำงานเหมือนคีย์บอร์ด คลิกช่องค้นหาแล้วสแกน รหัสจะถูกพิมพ์และค้นหาให้ หรือให้พนักงานพิมพ์รหัส/เบอร์เอง

ลูกค้าเปลี่ยนเบอร์หรือเปลี่ยนเครื่อง

ผู้ดูแลแก้เบอร์ในหน้าสมาชิกได้ ถ้าลูกค้าเปลี่ยนบัญชี LINE ให้ลบค่า user_id ในชีต “สมาชิก” แล้วให้ลูกค้าสมัครใหม่ด้วยเบอร์เดิม ระบบจะเชื่อมบัตรเดิมให้

แต้มหมดอายุทำงานอย่างไร

แต้มแต่ละครั้งที่สะสมมีวันหมดอายุของตัวเอง (ตามจำนวนเดือนที่ตั้ง) ทริกเกอร์รายวันจะตัดแต้มที่เลยกำหนดและเตือนลูกค้าล่วงหน้า 7 วัน ตั้งเป็น 0 เพื่อให้แต้มไม่หมดอายุ

เปิด URL แล้วขึ้น “ไม่พบสคริปต์ฟังก์ชัน: doGet” หรือหน้าขาว

ตรวจว่าวาง Code.gs ครบทั้งไฟล์ และมีไฟล์ HTML ชื่อ Index จากนั้นทำให้ใช้งานได้เป็นเวอร์ชันใหม่

ทริกเกอร์อัตโนมัติอยู่ที่ไหน

ใน Apps Script เมนูด้านซ้ายรูปนาฬิกา (ทริกเกอร์) จะเห็นทริกเกอร์ที่ setup สร้างไว้ ไม่ควรลบ หากเผลอลบให้รัน setup ใหม่