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

ติดตั้ง Jabphap LINE SalesFeed

แจ้งออเดอร์ สลิป และสรุปยอดขายเข้ากลุ่ม LINE อัตโนมัติจาก Google Sheets และ Google Forms — ทำงานบน 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 SalesFeed
2

ใส่ระบบ

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

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

  1. ในไฟล์ชีต ไปที่ ส่วนขยาย›Apps Script
  2. ตั้งชื่อโปรเจกต์มุมซ้ายบนเป็น Jabphap LINE SalesFeed (ชื่อนี้จะแสดงในหน้าขออนุญาตสิทธิ์)
  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
จัดการทริกเกอร์ตรวจแถวใหม่ตามรอบ ส่งสรุปยอดตามเวลา และรับเหตุการณ์ส่ง Google Form
แสดงเมนูในชีตเมนู Jabphap LINE SalesFeed ในไฟล์ชีต
3

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

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

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

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

ชีตเก็บอะไร
ปลายทาง LINEกลุ่ม/ผู้ใช้ที่รับข้อความ (เพิ่มอัตโนมัติเมื่อเชิญบอทเข้ากลุ่ม)
กฎแจ้งเตือนชีตที่ติดตาม เทมเพลต รูปแบบ เงื่อนไข ปลายทาง และแถวล่าสุดที่ตรวจแล้ว
สรุปยอดอัตโนมัติคอลัมน์วันที่/ยอด/แยกตาม ช่วงเวลา และเวลาส่ง
ประวัติการส่งทุกข้อความ สถานะ และข้อมูลสำหรับส่งซ้ำ (เก็บล่าสุด ~8,000 แถว)
ยอดขายชีตออเดอร์ตัวอย่าง (วันที่ เลขออเดอร์ ลูกค้า ช่องทาง สินค้า ยอดรวม ...)
แจ้งโอนเงิน (ฟอร์ม)ตัวอย่างหน้าตาคำตอบ Google Form แจ้งโอนพร้อมลิงก์สลิป
🔑 จดรหัสตั้งค่าครั้งแรก 6 หลัก

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

✓ รัน setup ซ้ำได้

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

4

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

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

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

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

เพราะสคริปต์เป็นของคุณเองและไม่ได้ส่งให้ 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 แล้วคัดลอก
  5. ในแท็บ Messaging API เปิด Allow bot to join group chats (หรือใน LINE OA Manager › ตั้งค่า › ตั้งค่าบัญชี › อนุญาตให้เข้าร่วมแชทกลุ่ม) เพื่อเชิญบอทเข้ากลุ่มได้
💡 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. เชิญ LINE OA เข้ากลุ่มทีมขาย/แพ็กของ/บัญชี กลุ่มจะขึ้นในหน้า กลุ่ม / ผู้รับ LINE เอง
  6. แก้กฎตัวอย่างให้ชี้ชีตยอดขายของร้าน (หรือคัดลอกข้อมูลมาวางในชีต “ยอดขาย”) เลือกปลายทาง แล้วกด ทดสอบส่งแถวล่าสุด
  7. ใช้กับ Google Form: เปิดฟอร์ม › แท็บคำตอบ › ลิงก์ไปยังชีต › เลือกไฟล์นี้ แล้วสร้างกฎที่ชี้ชีตคำตอบ (ชีตใหม่ชื่อ “การตอบแบบฟอร์ม 1”) — กดบันทึกในหน้าตั้งค่าหนึ่งครั้งเพื่อสร้างทริกเกอร์ฟอร์มถ้ายังไม่มี
หน้าเข้าสู่ระบบผู้ดูแล (ครั้งแรกจะขอรหัสตั้งค่า 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

ส่งเข้ากลุ่มใช้โควตาเท่าไร

LINE นับข้อความ push เข้ากลุ่มตามจำนวนสมาชิกในกลุ่ม เช่น กลุ่ม 10 คน ส่ง 1 ครั้ง = 10 ข้อความ ใช้ “รวมหลายแถว” หรือส่งเฉพาะออเดอร์ที่สำคัญเพื่อประหยัด ดูยอดใช้ที่หน้าภาพรวม (คำสั่ง “ยอดวันนี้” ในกลุ่มเป็นการตอบกลับ ไม่นับโควตา)

แทน LINE Notify ได้ไหม

ได้ LINE Notify ปิดบริการแล้ว ระบบนี้ใช้ LINE Messaging API ซึ่งเป็นช่องทางทางการผ่าน LINE OA ของร้าน

รูปสลิปจากฟอร์มไม่ขึ้นเป็นรูปในการ์ด

ไฟล์ที่อัปโหลดผ่าน Google Form อยู่ใน Drive ของเจ้าของฟอร์มและต้องล็อกอินจึงเปิดได้ LINE จึงแสดงเป็นปุ่ม “ดูสลิป” แทน คนในกลุ่มที่มีสิทธิ์เปิดไฟล์จะกดดูได้

ตั้งค่ากฎใหม่แล้วไม่ส่งแถวเดิม

ตั้งใจให้เป็นแบบนั้นเพื่อไม่ให้ส่งย้อนหลังทั้งชีต ถ้าต้องการส่งแถวเดิมด้วย ให้ติ๊ก “ส่งแถวเดิมที่มีอยู่แล้วทั้งหมดด้วย” ตอนสร้างกฎ

วันที่ในชีตเป็นข้อความ

รองรับทั้งค่าวันที่ของชีตและข้อความรูปแบบ วัน/เดือน/ปี (ค.ศ. หรือ พ.ศ.) เช่น 3/10/2569 14:30

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

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

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

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