สร้างบอตบันทึกค่าใช้จ่ายบน Telegram ด้วย Google Sheets

Piotr Grudzień
เผยแพร่ ใช้เวลาอ่าน 16 นาที
บทสนทนาจริงของ Pocket Ledger บน Telegram คู่กับสรุปใน Google Sheets ที่แสดง 12.20 EUR และ 6.00 USD

กาแฟหนึ่งแก้ว ตั๋วรถเมล์หนึ่งใบ สมุดหนึ่งเล่ม กว่าจะเปิดสเปรดชีต คุณอาจลืมรายการซื้อเล็ก ๆ เหล่านี้ไปแล้ว ถ้าการบันทึกใช้เพียงข้อความ Telegram หนึ่งข้อความ และการตรวจยอดเดือนใช้เพียงอีกข้อความล่ะ?

บทเรียนนี้จะสร้าง Pocket Ledger ซึ่งเป็นบอตบันทึกค่าใช้จ่ายบน Telegram ด้วย Google Sheets ส่งรายการซื้อ ยืนยันรายละเอียดที่บอตเสนอ แล้วถามยอดรวมรายเดือน สเปรดชีตเก็บแต่ละแถวและคำนวณตัวเลข ส่วนบอตดูแลบทสนทนา นี่คือผลลัพธ์เมื่อทำเสร็จแล้ว

เป้าหมายแรกคือ บันทึกกาแฟหนึ่งแก้ว เป้าหมายที่สองคือ อ่านยอดรวมที่ตรวจสอบกับสเปรดชีตได้ คุณจะได้รู้ด้วยว่าเหตุใดคำตอบว่า “บันทึกแล้ว” ในแชตจึงเป็นหลักฐานเพียงครึ่งเดียว

ดาวน์โหลดชุดตั้งค่า Pocket Ledger เพื่อรับเวิร์กบุ๊กเริ่มต้นที่จัดรูปแบบแล้ว รูปโปรไฟล์ พรอมป์ต์ การตั้งค่า Actions และแผ่นงานทดสอบ นำเข้าเวิร์กบุ๊กลงในสเปรดชีตที่ Quickchat AI สร้าง แล้วทำตามขั้นตอนด้านล่าง ตัวอย่างที่คัดลอกได้ใช้ภาษาอังกฤษและเดือนพฤศจิกายน 2026 ตลอดทั้งบท เพื่อให้คุณเทียบผลลัพธ์กับภาพหน้าจอได้

ต้องมีอะไรบ้างเพื่อสร้างบอตบันทึกค่าใช้จ่ายบน Telegram?

คุณต้องมี Telegram บัญชี Google และบัญชี Quickchat AI การตั้งค่านี้ใช้หน้าจัดการและสูตรในสเปรดชีต จึงไม่มีโปรแกรมที่ต้องนำไปโฮสต์

  1. สร้างบัญชี Quickchat AI ยืนยันบัญชีให้เรียบร้อย แล้วสร้าง Agent ชื่อ Pocket Ledger
  2. เตรียมบัญชี Google สำหรับสเปรดชีตใหม่ เริ่มจากรายการสมมติด้านล่าง
  3. ใช้บอต Telegram ใหม่สำหรับแบบฝึกหัดนี้ และเตรียมบัญชี Telegram ที่เชื่อถือได้อีกบัญชีไว้ทดสอบสิทธิ์เข้าถึงตอนท้าย

แผน Free ของ Quickchat AI มีไว้สำหรับการเรียนรู้ส่วนบุคคลที่ไม่ใช่เชิงพาณิชย์ และมีโควตาจำกัด บทสนทนากับ AI และ Simulation Testing ใช้เครดิต ดู แผนและโควตาปัจจุบัน ก่อนเลือกแผนสำหรับการใช้งานต่อเนื่อง

แผนภาพหนึ่ง Action เขียนแถวค่าใช้จ่ายและอีก Action อ่านสรุปแยกต่างหาก สองทิศทาง สอง Actions การบันทึกแถวไม่ได้ทำให้ Agent อ่านยอดรวมก่อนหน้าได้ด้วย

ขั้นที่ 1: เชื่อมต่อบอต Telegram ส่วนตัวอย่างไร?

BotFather สร้างตัวตนของบอต ส่วน Quickchat AI ให้ Agent ที่ตอบข้อความของบอต

เปิด @BotFather บัญชีทางการ ส่ง /newbot ตั้งชื่อบอตว่า Pocket Ledger และเลือกชื่อผู้ใช้ที่ยังว่างและลงท้ายด้วย bot ใช้ /setuserpic เพื่ออัปโหลดรูปโปรไฟล์จากชุดตั้งค่า เก็บโทเค็นไว้เป็นความลับ คุณจะนำไปวางใน Quickchat AI โดยตรง

BotFather สร้างบอต Pocket Ledger โดยปิดบังโทเค็นไว้

เลือกชื่อที่แสดงและชื่อผู้ใช้ที่ไม่ซ้ำ โทเค็น BotFather ถูกปิดบังไว้

ใน Quickchat AI เปิด External Apps → Telegram → Your own bot เลือก Connect to Telegram วางข้อมูลยืนยันตัวตนลงใน Bot Token แล้วส่งข้อมูลในกล่องโต้ตอบ เปิด Enable your own bot และเลือก Save ดูรายละเอียดของแต่ละหน้าจอได้ใน คู่มือ BotFather

Quickchat AI แสดง Pocket Ledger ที่เชื่อมต่อแล้วและเปิดสวิตช์ Enable your own bot บอตที่เชื่อมต่อใช้ชื่อ Pocket Ledger เดียวกับที่คุณจะเห็นใน Telegram

เปิดลิงก์บอตใหม่ใน Telegram ส่ง /start แล้วส่ง Hello ในแชตส่วนตัว /start จะส่งข้อความต้อนรับ ส่วนข้อความทั่วไปจะสร้างบทสนทนาใน Inbox และเมทาดาทาผู้ส่งที่ต้องใช้ในขั้นตอนถัดไป ระหว่างตั้งค่า ให้ปิดใช้งาน Actions ที่เกี่ยวข้องกับข้อมูลส่วนบุคคลไว้ก่อน

Pocket Ledger ตอบ start และ Hello ในบทสนทนาส่วนตัวจริงบน Telegram

คำตอบต่อ Hello ยืนยันว่า Telegram เชื่อมถึง Quickchat AI แล้ว การโต้ตอบ Hello ยังปรากฏใน Quickchat Inbox ด้วย

เปิดบทสนทนานี้ใน Quickchat AI ที่ Inbox → Details → Visitor หา Telegram User Id และ Telegram Chat Type ซึ่งมีคีย์เมทาดาทาเป็น telegram_user_id และ telegram_chat_type คัดลอก ID ผู้ใช้แบบตัวเลขด้วยปุ่มที่ปรากฏเมื่อชี้เมาส์ แล้วตรวจสอบว่าประเภทแชตเป็น private

รายละเอียดผู้เยี่ยมชมใน Inbox แสดงช่อง Telegram User Id และ Telegram Chat Type เป็น private โดยปิดบังค่าข้อมูลส่วนบุคคล นำ ID ผู้ส่งจากช่องนี้ไปใช้ ภาพหน้าจอซ่อนข้อมูลระบุตัวบุคคลไว้ ให้ใช้ค่าจริงของคุณเอง

ID นี้มาจากเมทาดาทาผู้ส่งของ Telegram ชื่อผู้ใช้ ตัวเลขที่พิมพ์ในข้อความ และ ID ของบอตเองเป็นคนละค่า คุณจะใช้ ID ผู้ส่งเพื่อจำกัดการเข้าถึงทั้งสอง Actions ในขั้นต่อไป

ขั้นที่ 2: เตรียม Google Sheet อย่างไร?

การเชื่อมต่อ Google Sheets จะสร้างสเปรดชีตและ Action เริ่มต้น ใช้ไฟล์นั้นต่อเพื่อให้ Action และสิทธิ์ของ Google อ้างถึงทรัพยากรเดียวกัน

  1. เปิด Actions & MCPs → Add Action → Google Sheets แล้วอนุญาตบัญชี Google คู่มือเชื่อมต่อ Google Sheets อธิบายขั้นตอนยินยอมและการตั้งค่าเริ่มต้น
  2. ปิด Action เริ่มต้นทันที เพราะระบบสร้างมาในสถานะเปิดใช้งาน เก็บชื่อ log_lead_to_google_sheet ไว้ เนื่องจากการเชื่อมต่อใหม่ใช้ชื่อนี้ค้นหา Action เราจะเปลี่ยนหน้าที่ของมันเป็นการบันทึกค่าใช้จ่าย
  3. เปิดสเปรดชีตที่สร้างขึ้นและตั้งชื่อว่า Pocket Ledger demo ในไฟล์เดโมใหม่นี้ เลือก File → Import → Upload เลือก pocket-ledger-starter.xlsx จากชุดตั้งค่า แล้วเลือก Replace spreadsheet และคลิก Import data วิธีนี้จะเตรียมทั้ง Expenses และ Summary ภายในไฟล์ที่ Quickchat AI เข้าถึงได้ ใช้ตัวเลือกนี้กับสเปรดชีตเดโมใหม่เท่านั้น
  4. ตรวจสอบข้อมูลเริ่มต้นสามแถวด้านล่าง ยอดเริ่มต้นใน Summary ควรเป็น 7.70 EUR และ 6.00 USD ขั้นตอนที่ 6 อธิบายสูตรและเชื่อมต่อ Action สำหรับอ่านข้อมูล

กล่องเชื่อมต่อ Google Sheets ของ Quickchat AI อธิบายสเปรดชีตและ Action เริ่มต้นที่สร้างขึ้น เริ่มจากการเชื่อมต่อ Google Sheets การอนุญาตสิทธิ์จะสร้างสเปรดชีตที่ Actions ทั้งสองใช้ร่วมกัน

อยากสร้างแท็บเองหรือไม่? เปลี่ยนชื่อแท็บเริ่มต้นเป็น Expenses สำหรับตัวอย่างภาษาอังกฤษเหล่านี้ ให้ตั้งค่า File → Settings → Locale → United States กำหนด A:D และ F:H เป็น Plain text และ E เป็น Number ที่มีทศนิยมสองตำแหน่ง แล้ววางบล็อกด้านล่างลงใน A1 ตรึงแถวหัวตารางและขยายความกว้างคอลัมน์ เพิ่ม Summary ตามขั้นตอนที่ 6 Google ยังมีเอกสารเรื่องการนำเข้าเวิร์กบุ๊ก Excel ลงในสเปรดชีตที่มีอยู่ ด้วย

คัดลอกค่าใช้จ่ายเริ่มต้นสามรายการ
date	month	item	category	amount	currency	note	conversation_url
2026-11-01	2026-11	coffee	food	4.50	EUR	synthetic example
2026-11-02	2026-11	bus ticket	transport	3.20	EUR	synthetic example
2026-11-03	2026-11	notebook	stationery	6.00	USD	synthetic example

แท็บ Expenses จริงก่อนบันทึกจาก Telegram พร้อมรายการซื้อสมมติเริ่มต้นสามรายการ ค่าใช้จ่ายเริ่มต้นสามรายการพร้อมรับรายการที่สี่ จำนวนเงินเป็นตัวเลขใน E ส่วนรหัสสกุลเงินเป็นข้อความแยกใน F

คอลัมน์ conversation_url จะเชื่อมค่าใช้จ่ายใหม่แต่ละรายการกับบทสนทนา เว้นว่างไว้สำหรับตัวอย่างสามรายการที่ป้อนเอง สิทธิ์ drive.file ของ Google ครอบคลุมไฟล์ที่แอปสร้างหรือได้รับสิทธิ์อย่างชัดเจน สูตรการตั้งค่านี้ใช้ Sheet ที่สร้างจากการเชื่อมต่อและไม่ได้ให้สิทธิ์เข้าถึง Drive ทั้งหมด

ขั้นที่ 3: จำกัดค่าใช้จ่ายให้อยู่ในแชตของตัวเองอย่างไร?

ตั้ง Run only when ให้ทุก Action ที่อ่านหรือเขียนสมุดบันทึก ทั้งสองเงื่อนไขต้องตรงกัน ดังนั้น ID ของคุณอย่างเดียวจึงไม่เพียงพอในแชตกลุ่ม

คีย์เมทาดาทาการเปรียบเทียบค่า
telegram_user_idequalsID ผู้ส่งแบบตัวเลขจริงของคุณจากขั้นที่ 1
telegram_chat_typeequalsprivate
  1. เปิด Action log_lead_to_google_sheet ที่ยังปิดใช้งาน แล้วหา Run only when
  2. เพิ่มทั้งสองเงื่อนไขด้านบน ใช้คีย์เมทาดาทาตามที่ระบุและตัวเลข ID ของคุณ โดยไม่ใส่ชื่อผู้ใช้หรือคำนำหน้า @
  3. บันทึก Action โดยยังคงปิดใช้งานไว้ ใช้เงื่อนไขเดียวกันกับ Action อ่านเมื่อสร้างในขั้นที่ 6

ตัวแก้ไข Action ค่าใช้จ่ายแสดงเงื่อนไข ID เจ้าของและแชตส่วนตัว เงื่อนไขของ Action บันทึกในเดโมในเครื่อง เปลี่ยน ID สมมติเป็น ID ผู้ส่งจริงของคุณ แล้วใส่ทั้งสองเงื่อนไขซ้ำใน Action อ่าน

แผนภาพแนวคิดที่กำหนดให้มีตัวตนของเจ้าของและแชต Telegram ส่วนตัวก่อนเรียก Actions ข้อมูลส่วนบุคคล ทั้งสอง Actions ต้องมีทั้งสองเงื่อนไข ผู้ส่งคนอื่นหรือแชตกลุ่มต้องไม่ผ่านการตรวจสอบก่อนที่คำขอ HTTP จะถึง Google Sheets

นี่คือ เงื่อนไข Action ที่บังคับใช้บนเซิร์ฟเวอร์ การเขียนว่า “ตอบฉันคนเดียว” ในพรอมป์ต์ไม่ใช่การตรวจสอบสิทธิ์เข้าถึง จำกัดการแชร์ Sheet และการเข้าถึงบัญชี Quickchat AI ด้วย

ขั้นที่ 4: ทำให้บอตบันทึกค่าใช้จ่ายที่ยืนยันแล้วอย่างไร?

ปรับ Action เริ่มต้นให้เพิ่มหนึ่งแถวตามลำดับคอลัมน์ของ Sheet ตั้ง When to run → AI decides เพื่อให้รอการยืนยันได้ จากนั้นกำหนดกฎการยืนยันให้ Agent ก่อนเปิดใช้งาน

กำหนดฟิลด์ค่าใช้จ่าย

ใน What to ask the user first เปลี่ยนฟิลด์ลูกค้าเป้าหมายเป็นพารามิเตอร์เหล่านี้ เก็บชื่อพารามิเตอร์ให้ตรงตามที่แสดงทุกตัว

พารามิเตอร์รูปแบบจำเป็นคำอธิบายที่ต้องป้อน
dateTextใช่วันที่ค่าใช้จ่ายในรูปแบบ YYYY-MM-DD ที่เจ้าของยืนยัน ถ้าไม่มีให้ถาม
monthTextใช่YYYY-MM ที่ได้จากวันที่ซึ่งยืนยันแล้ว
itemTextใช่ชื่อสั้น ๆ ของสิ่งที่ซื้อ
categoryTextใช่หมวดหมู่ง่าย ๆ ที่ตกลงกับเจ้าของ เช่น อาหารหรือการเดินทาง
amountDecimal Numberใช่จำนวนเงินเป็นตัวเลขบวก ไม่มีสัญลักษณ์สกุลเงิน
currencyTextใช่รหัสสกุลเงิน ISO ที่ยืนยันแล้ว เช่น EUR หรือ USD ถ้าสัญลักษณ์กำกวมให้ถามให้ชัดเจน
noteTextไม่หมายเหตุที่ไม่บังคับ เว้นว่างถ้าไม่ได้ให้มา

เก็บ ID สเปรดชีตจริงจาก API Endpoint เดิม เปลี่ยนช่วงเป็น Expenses!A:H ใช้เมธอด POST ตามเดิม และตั้ง Query Params เป็น valueInputOption=RAW กับ insertDataOption=INSERT_ROWS ลบการตั้งค่าคิวรีที่ซ้ำกันหากมีอยู่ใน URL แล้ว

คัดลอกตัวอย่างอ้างอิงคำขอเพิ่มแถว
POST https://sheets.googleapis.com/v4/spreadsheets/YOUR_CREATED_SHEET_ID/values/Expenses!A:H:append
Query Params:
valueInputOption = RAW
insertDataOption = INSERT_ROWS
Headers:
Authorization = Bearer {{google_sheets_access_token}}
Content-Type = application/json

YOUR_CREATED_SHEET_ID เป็นข้อความแทนค่าสำหรับอธิบาย เก็บ ID จริงที่อยู่ใน URL เริ่มต้น อย่าวางข้อความแทนค่านี้ทับลงไป เลือก System Token ของ Google Sheets ที่มีอยู่ในค่า Authorization และเลือกตัวแปร URL บทสนทนาที่ระบบมีให้ในส่วนเนื้อหา

ในแท็บ Body ป้อน:

{"values":[["{{date}}","{{month}}","{{item}}","{{category}}","{{amount}}","{{currency}}","{{note}}","{{conversation_url}}"]]}

ตัวแก้ไข Body ของ API Endpoint จริงที่แสดงแถวค่าใช้จ่ายและชิปพารามิเตอร์ การตั้งค่า Action ค่าใช้จ่ายในเครื่อง เนื้อหาคำขอกำหนดลำดับเซลล์ ส่วนรูปแบบพารามิเตอร์จำนวนเงินกำหนดชนิดตัวเลข

เก็บเครื่องหมายอัญประกาศรอบ {{amount}} ในตัวแก้ไขไว้ เนื่องจากข้อความแทนค่านี้อ้างถึงพารามิเตอร์ Decimal Number โดยตรง การแทนค่าจึงให้ตัวเลข JSON เช่น 4.5 การเอาอัญประกาศออกทำให้ JSON ในตัวแก้ไขไม่ถูกต้อง ใน Sheet ผลลัพธ์ ให้ตรวจสอบว่า E เป็นตัวเลขและถูกรวมในสูตร

append API ของ Google เป็นตัวเพิ่มแถว RAW เก็บข้อความตามตัวอักษร เช่น หมายเหตุที่ขึ้นต้นด้วย = แทนการคำนวณเป็นสูตร พารามิเตอร์ตัวเลขเป็นตัวกำหนดชนิดข้อมูลของจำนวนเงิน

คัดลอกคำอธิบาย Action บันทึก
Save one personal expense to the configured Google Sheet. Call only after the owner explicitly confirms the proposed date, item, category, amount and currency. Ask for missing or ambiguous fields before saving. After confirmation, append one row once. Report success only after a successful API response. If the outcome is uncertain, tell the owner to inspect the Sheet before submitting again.

ให้คำแนะนำแก่ Pocket Ledger

เปิด Identity → Main Prompt แล้ววางข้อความต่อไปนี้ ข้อความระบุชื่อทั้งสอง Actions เพื่อให้เป้าหมายที่สองใช้งานได้เมื่อคุณเพิ่ม Action อ่านสรุป

ตัวแก้ไข Main Prompt ของ Pocket Ledger ใน Quickchat AI Main Prompt อยู่ใน Identity ภาพหน้าจอในเครื่องนี้แสดงตำแหน่งฟิลด์ ให้ใช้บล็อกข้อความฉบับเต็มที่คัดลอกได้ด้านล่าง

กฎการยืนยันเปิดโอกาสให้คุณหยุดตรวจสอบ คุณสามารถแก้ “EUR 4.50” เป็น “EUR 5.00” ก่อนอนุมัติรายการซื้อได้ Agent ควรปรับข้อเสนอแล้วถามยืนยันอีกครั้ง

คัดลอก Main Prompt ของ Pocket Ledger
You are Pocket Ledger, a personal expense notebook.

For an expense, collect its date, item, positive amount and ISO currency code. Suggest a simple category and include an optional note only when supplied. Ask for an explicit YYYY-MM-DD date if it is missing or relative; do not guess today's date or the owner's timezone. Clarify ambiguous currency symbols. Derive month as YYYY-MM from the confirmed date.

Show the proposed date, item, category, amount and currency. Wait for explicit confirmation. Apply corrections and ask for confirmation again. Only then call log_lead_to_google_sheet once for that expense. Do not claim it was saved unless the Action succeeds. If a request fails or its outcome is uncertain, explain that and ask the owner to inspect the Sheet before retrying.

For monthly totals, ask for an explicit month and currency when unclear, then call read_expense_summary. Quote the matching month, currency and total returned from the Sheet. Keep currencies separate. A missing summary row is unavailable, not zero. Never calculate totals from remembered conversation messages.

Personal-data Actions are restricted to the owner's private Telegram chat. If a condition blocks an Action, do not claim success or suggest changing identity values in chat. This notebook handles typed expenses, not bank accounts, voice transcription or PDF receipts.

บันทึกพรอมป์ต์ ตรวจสอบทั้งสองเงื่อนไขการทำงานอีกครั้ง แล้วเปิด Action ค่าใช้จ่าย ชื่อยังคงเป็น log_lead_to_google_sheet แต่พารามิเตอร์ คำอธิบาย และเนื้อหาใหม่เป็นตัวกำหนดขั้นตอนบันทึกค่าใช้จ่ายแล้ว

ขั้นที่ 5: บันทึกค่าใช้จ่ายรายการแรกอย่างไร?

ตอนนี้เพิ่มรายการใหม่รายการแรกลงในสมุด เปิด Telegram, Inbox และสเปรดชีตค้างไว้ คุณจะเห็นรายการกาแฟเดียวกันผ่านแต่ละจุด

  1. ในแชต Telegram ส่วนตัว ส่ง Coffee, 4.50 euros on 2026-11-04
  2. ตรวจสอบข้อเสนอ: วันที่ 2026-11-04 รายการ Coffee หมวดหมู่ Food จำนวนเงิน 4.50 สกุลเงิน EUR Action จะกำหนด month เป็น 2026-11 จากวันที่ขณะบันทึกแถว
  3. ก่อนยืนยัน ให้ตรวจ Expenses ซึ่งควรยังมีเพียงสามแถวเริ่มต้นเท่านั้น

ส่ง Save it หนึ่งครั้ง แล้วเปิดบทสนทนาใน Inbox ของ Quickchat AI คำตอบว่าบันทึกแล้วมีส่วน 1 action called ที่เปิดดูรายละเอียดได้ เปิดส่วนนี้เพื่อดูสิ่งที่เกิดขึ้นเบื้องหลังคำตอบสั้น ๆ ใน Telegram

คำตอบว่าบันทึกกาแฟแล้วใน Quickchat Inbox พร้อมส่วน one action called ที่เปิดรายละเอียดได้ คำยืนยันเดียวกันใน Inbox พร้อม Action ให้ตรวจสอบ

ขยาย Result → Show full ตรวจสอบวันที่ เดือนที่คำนวณจากวันที่ จำนวนเงินชนิดตัวเลข สกุลเงิน และสถานะ HTTP ในการรันจริงครั้งนี้ Google ส่งกลับ HTTP 200, updatedRows: 1 และ updatedRange: Expenses!A5:H5

Action ค่าใช้จ่ายที่ขยายใน Inbox แสดงข้อมูลนำเข้าจริงและผลตอบกลับว่าต่อท้ายหนึ่งแถวสำเร็จ โดยปิดบังตัวระบุส่วนตัว Action สำหรับบันทึกส่งจำนวนเงิน 4.5 เป็นตัวเลขและเขียนหนึ่งแถว ตัวระบุส่วนตัวถูกปิดบัง แต่ช่วงที่ส่งกลับและผลลัพธ์ยังมองเห็นได้

สุดท้าย เปิด Expenses แถว 5 ควรมีรายการกาแฟเดียวกัน โดยคอลัมน์เดือนเป็น 2026-11 จำนวนเงินเป็น 4.50 และสกุลเงินเป็น EUR คอลัมน์สุดท้ายลิงก์กลับไปยังบทสนทนาใน Inbox เพื่อให้คุณตามจากรายการกลับไปยังข้อความที่สร้างรายการนั้นได้

Google Sheets หลังยืนยันใน Telegram โดยมีกาแฟรายการใหม่ในแถว 5 ของ Expenses ค่าใช้จ่ายรายการที่สี่มาจาก Telegram ลิงก์ Inbox ส่วนตัวถูกปิดบังในภาพที่เผยแพร่

ตอนนี้คุณมีขั้นตอนประจำวันง่าย ๆ ที่ใช้ได้จริงแล้ว: ส่ง ยืนยัน ตรวจสอบ ต่อไปให้แหล่งข้อมูลที่เชื่อถือได้แก่บอต เพื่ออ่านเมื่อคุณถามว่าเดือนนี้เงินไปอยู่ที่ไหน

ขั้นที่ 6: ถามยอดรวมรายเดือนอย่างไร?

ให้ Google Sheets คำนวณยอดรวม แล้วให้ Action อ่านดึงผลมา การเก็บการคำนวณใน Sheet ทำให้ตรวจสอบคำตอบได้แม้บทสนทนาจะจบไปแล้ว

เพิ่มแท็บ Summary

หากคุณนำเข้าเวิร์กบุ๊กเริ่มต้นแล้ว Summary และสูตรต่าง ๆ ก็พร้อมใช้งาน ค่าเริ่มต้นคือ 7.70 EUR และ 6.00 USD การบันทึกกาแฟจะเปลี่ยนเฉพาะแถว EUR หากสร้างสเปรดชีตเอง ให้ใช้ขั้นตอนด้านล่าง

แท็บ Summary เริ่มต้นแสดง 7.70 EUR และ 6.00 USD ก่อนบันทึกกาแฟ จุดเริ่มต้น: สองสกุลเงิน สองยอดรวมที่เป็นอิสระต่อกัน

  1. สร้างแท็บชื่อ Summary ตั้งคอลัมน์ A:B เป็น Plain text แล้วป้อน month, currency, total ใน A1:C1
  2. ป้อน 2026-11 และ EUR ใน A2:B2 จากนั้นป้อน 2026-11 และ USD ใน A3:B3
  3. ป้อนสูตรนี้ใน C2 แล้วเติมลงถึง C3 ตั้งรูปแบบ C เป็นตัวเลขที่มีทศนิยมสองตำแหน่ง
=SUMIFS(Expenses!$E$2:$E$501,Expenses!$B$2:$B$501,A2,Expenses!$F$2:$F$501,B2)

ฟังก์ชัน SUMIFS บวกจำนวนเงินที่เดือน และ สกุลเงินตรงกับแถวสรุป หากการตั้งค่าภูมิภาคของ Sheet ต้องใช้อัฒภาคคั่นอาร์กิวเมนต์ ให้เปลี่ยนจุลภาคในสูตรเป็นอัฒภาค ตัวเลขในคำขอ JSON ยังคงใช้จุดทศนิยม

สูตร Summary จริงและยอดรวมเดือนพฤศจิกายนที่อัปเดตหลังบันทึกกาแฟ เลือก C2 เพื่อดูสูตรที่ให้ผล 12.20 EUR แถว USD ยังเป็น 6.00

ตัวอย่างการคำนวณที่แยกยอดเดือนพฤศจิกายน 12.20 EUR ออกจาก 6.00 USD ยอดเริ่มต้น 7.70 EUR บวกกาแฟใหม่ 4.50 EUR ได้ 12.20 EUR ส่วนสมุด 6.00 USD อยู่ในยอดรวมของตัวเอง

สูตรเริ่มต้นครอบคลุมแถว 2 ถึง 501 ในการรันที่บันทึกภาพนี้ ช่วงทั้งสามสิ้นสุดที่ 502 หลังจากแทรกแถวใหม่ Sheets อาจปรับการอ้างอิงระหว่างการแทรก ตรวจสอบให้ช่วง Expenses ทั้งสามตรงกันเสมอ และขยายพร้อมกันก่อนที่รายการจะเกินช่วงที่ครอบคลุม เพิ่มแถวสรุปเดือนและสกุลเงินสำหรับทุกคู่ที่คุณต้องการถาม

เพิ่ม Action อ่าน

เปิด Actions & MCPs → Add Action → API Action ใช้ Generate กับคำขอด้านล่าง Actions ที่สร้างวิธีนี้จะเริ่มในสถานะปิดใช้งาน ตั้งชื่อว่า read_expense_summary และคง When to run เป็น AI decides เพื่อให้ใช้ผลลัพธ์ประกอบคำตอบได้ ใช้ ID สเปรดชีตจริงและ System Token ของ Google Sheets ชุดเดิม ไม่ต้องมีพารามิเตอร์ที่ผู้ใช้ป้อน

คัดลอกคำขอสำหรับตัวสร้าง Action
Create a read-only Google Sheets Action named read_expense_summary. Use GET for the Summary!A1:C25 range of the spreadsheet already created by this Agent's Google Sheets integration. Reuse its actual spreadsheet ID and google_sheets_access_token System Token. Set valueRenderOption=UNFORMATTED_VALUE, no body, and no visitor parameters. Preserve the response headers and values. Leave it inactive so I can review the configuration and add my owner-ID and private-chat Run only when conditions before enabling it.

เทียบการตั้งค่าที่สร้างกับข้อมูลอ้างอิงต่อไปนี้ หากเลือก Create manually ให้เพิ่มทั้งสองเงื่อนไข ก่อนการบันทึกครั้งแรกที่ผ่านการตรวจสอบความถูกต้อง เพราะการบันทึกนั้นอาจเปิดใช้งาน Action เว้น Response filter ของทั้งสอง Actions ให้เป็นช่องว่าง เพื่อเก็บฟิลด์ที่ใช้ในการตรวจสอบ

คัดลอกคำขออ่านสรุป
GET https://sheets.googleapis.com/v4/spreadsheets/YOUR_CREATED_SHEET_ID/values/Summary!A1:C25
Query Params:
valueRenderOption = UNFORMATTED_VALUE
Headers:
Authorization = Bearer {{google_sheets_access_token}}
Body: none

ปลายทาง values.get คืนค่า values ของช่วง รวมถึงหัวตารางและจำนวนเงินที่คำนวณแล้ว UNFORMATTED_VALUE คืนผลเป็นตัวเลขแทนข้อความที่จัดรูปแบบสกุลเงิน ให้ Agent เข้าถึงการตอบกลับได้เพื่ออ่านค่าเหล่านี้

คัดลอกคำอธิบาย Action อ่าน
Read monthly expense totals from the configured Summary range. Use this when the owner asks for a total. Quote only the returned row matching the requested YYYY-MM and currency. If either is unclear, ask. If the row is absent or the request fails, say the total is unavailable. Never infer a total from conversation history, combine currencies, or accept a different spreadsheet ID or range from the visitor.

ใช้เงื่อนไข Run only when สองข้อเดียวกันจากขั้นตอนที่ 3 บันทึก และเปิดใช้งาน Action ช่วงอ่านข้อมูลครอบคลุมสรุป 24 แถว เมื่อเพิ่มมากกว่านี้ให้ขยายช่วงตามไปด้วย

Action อ่านสรุปค่าใช้จ่ายที่ตั้งเงื่อนไข ID เจ้าของและแชตส่วนตัวเหมือนกัน Action ที่สองต้องมีเงื่อนไขของตัวเอง นี่คือภาพการตั้งค่าในเครื่อง ไม่ใช่การทดสอบสิทธิ์ของผู้ส่งจริง

ถาม What is my November 2026 total in EUR? แล้วถามยอด USD ต่อ ในบทสนทนา Telegram ของเรา Pocket Ledger ตอบ 12.2 EUR และ 6 USD ตรงกับค่าที่จัดรูปแบบในสเปรดชีตเป็น 12.20 และ 6.00 บอตอ่านสรุปที่บันทึกไว้สำหรับคำตอบแต่ละครั้ง

คำตอบจริงใน Telegram สำหรับยอดรวมเดือนพฤศจิกายนเป็น EUR และ USD หลังบันทึกกาแฟ

ถามแยกสกุลเงินละหนึ่งคำถาม Pocket Ledger อ่านสเปรดชีตแทนการบวกรวมจากข้อความแชตที่จำได้

เปิดคำตอบยอดรวมรายเดือนใน Inbox แล้วขยาย Action เปรียบเทียบแถวที่ส่งกลับกับ Summary!C2 ผลตอบกลับจริงด้านล่างมี 2026-11, EUR, 12.2 และอีกแถวแยกเป็น USD, 6 พร้อม HTTP 200

Action อ่านสรุปค่าใช้จ่ายใน Inbox ส่งกลับยอดจริงเดือนพฤศจิกายนเป็น EUR และ USD จาก Google Sheets ตอนนี้คำตอบ ค่าที่ส่งกลับ และสเปรดชีตตรงกันแล้ว นี่คือเป้าหมายที่คุณเห็นตอนต้นบท

ตรวจสอบข้อผิดพลาดก่อนใช้ค่าใช้จ่ายจริงอย่างไร?

ทดสอบคำขอที่ข้อมูลไม่ครบและผู้เรียกที่ต้องถูกบล็อกอย่างจริงจังพอ ๆ กับกรณีบันทึกกาแฟสำเร็จ เก็บข้อมูลเดโมไว้จนกว่าจะผ่านการตรวจสอบด้านล่าง

ลองทำสิ่งนี้สิ่งที่ต้องตรวจสอบ
Lunch, $12 yesterdayAgent ถามสกุลเงินและวันที่จริง ไม่มีแถวใหม่ปรากฏ
แก้จำนวนเงินที่เสนอก่อนยืนยันยืนยันข้อเสนอที่แก้แล้วก่อนเพิ่มหนึ่งแถว
ถามยอดเดือนพฤศจิกายนเป็น EUR แล้วเป็น USDได้ผลแยกกัน: 12.20 EUR และ 6.00 USD สำหรับข้อมูลตัวอย่าง
ถามเดือนธันวาคม 2026 โดยไม่มีแถวสรุปเดือนธันวาคมAgent บอกว่าไม่มียอดรวมให้ใช้ แทนการสร้างเลขศูนย์ขึ้นมา
ผู้ส่งคนที่สองถามยอดรวมและพยายามบันทึกค่าใช้จ่ายทั้งสอง Actions ถูกปฏิเสธและไม่มีค่าข้อมูลส่วนตัวถูกเปิดเผย
เจ้าของส่งคำขอเดียวกันในกลุ่มทั้งสอง Actions ถูกปฏิเสธเพราะไม่ใช่แชตส่วนตัว
การบันทึกล้มเหลวหรือหมดเวลารอคำตอบแจ้งความล้มเหลวหรือความไม่แน่นอน ตรวจสอบ Sheet ก่อนลองใหม่

สำหรับการทดสอบภาษาที่ทำซ้ำได้ เปิด Testing → Create Dataset → Paste messages แล้วใช้ข้อความและเกณฑ์ประเมินในชุดตั้งค่า ทดสอบบทสนทนาเต็มแยกต่างหากสำหรับลำดับการยืนยัน เมทาดาทาใน Preview หรือ Simulation เป็นข้อมูลจำลอง จึงไม่พิสูจน์ว่าผู้ส่ง Telegram คนที่สองจริงถูกบล็อก

ชุดข้อมูลทดสอบของ Pocket Ledger ในหน้าจอ Testing จริงของ Quickchat AI ชุดข้อมูลในเครื่องเตรียมไว้สำหรับทดสอบ การมีชุดข้อมูลไม่ได้หมายความว่า Simulation ทำงานเสร็จแล้วหรือเป็นหลักฐานว่ามีการเขียนลง Google Sheets

หากพฤติกรรมผิด ให้แก้คำแนะนำที่เกี่ยวข้องหนึ่งจุด แล้วส่งข้อมูลเดิมซ้ำและตรวจสอบการเรียกกับ Sheet อีกครั้ง เช่น หากเพิ่มแถวก่อนเวลา ควรดูถ้อยคำเรื่องการยืนยันใน Action บันทึกให้ละเอียดขึ้น การยืนยันเป็นคำแนะนำ ไม่ใช่การรับประกันความไม่ซ้ำในฐานข้อมูล หลังหมดเวลารอ การตรวจสอบ Sheet สำคัญกว่าการกดส่งซ้ำ

เมื่อทั้งกระบวนการทำงานแล้ว ให้ลบแถวค่าใช้จ่ายสมมติ เก็บหัวตารางและสูตรไว้ แล้วเพิ่มแถวสรุปสำหรับเดือนและสกุลเงินที่คุณใช้จริง รายการซื้อจริงครั้งแรกทำตามขั้นตอนง่าย ๆ เดียวกับกาแฟได้

ผู้ช่วย AI ช่วยตั้งค่า Pocket Ledger ได้ไหม?

ผู้ช่วยจัดการบัญชีที่เชื่อมต่อแล้วช่วยเตรียม Agent และทบทวนการตั้งค่า Actions ได้ ทำตาม Manage with AI โดยใช้ รายการ Quickchat AI บน ChatGPT หรือ รายการบน Claude ส่งชุดตั้งค่าและคำขอนี้ให้ผู้ช่วย:

Help me configure Pocket Ledger from this setup kit. Inspect the available Quickchat AI tools first. Prepare the Main Prompt and the two HTTP Actions using the exact field names, numeric amount type and fixed ranges. Keep log_lead_to_google_sheet as the starter name. Ask me to complete Google OAuth and Telegram Bot Token setup in the dashboard. Apply both owner/private run conditions before enabling either Action. Do not run credit-consuming tests or append expenses until I ask. Report any setting your tools cannot configure so I can complete it in the dashboard.

เจ้าของเป็นผู้ยินยอมกับ Google และเชื่อมต่อ Telegram ตรวจสอบการตั้งค่าและทดสอบตามรายการข้างต้นเหมือนกัน ไม่ว่าใครจะเป็นผู้ป้อนค่า

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

จะติดตามค่าใช้จ่ายใน Telegram ด้วย Google Sheets ได้อย่างไร?

เชื่อมบอต Telegram กับ Quickchat AI Agent แล้วอนุญาต Google Sheets ตั้งหนึ่ง Action ให้เพิ่มค่าใช้จ่ายหลังยืนยัน และอีก Action ให้อ่านสรุปรายเดือนที่คำนวณด้วยสูตร จำกัดทั้งสอง Actions ด้วย ID ผู้ใช้ Telegram ของคุณและแชตส่วนตัว

บอตบอกได้ไหมว่าเดือนนี้ใช้เงินไปเท่าไร?

ได้ เมื่อเดือนและสกุลเงินที่ขอมีแถวอยู่ในช่วง Summary ที่ตั้งไว้ Google Sheets คำนวณยอดด้วย SUMIFS แล้ว Action อ่านดึงผลมา Action ที่เพิ่มแถวอย่างเดียวอ่านยอดรวมไม่ได้ และการไม่มีแถวสรุปไม่ได้หมายความว่ายอดเป็นศูนย์

คนอื่นอ่านค่าใช้จ่ายของฉันผ่านบอต Telegram ได้ไหม?

ทั้งสอง Actions ที่จัดการข้อมูลส่วนบุคคลต้องกำหนดให้ telegram_user_id เป็นค่าของคุณที่ตรวจสอบแล้ว และ telegram_chat_type เท่ากับ private เงื่อนไขเหล่านี้บล็อกการเรียกจากผู้ส่งคนอื่นและกลุ่ม ทดสอบทั้งสองกรณีก่อนเพิ่มข้อมูลส่วนตัว และจำกัดการเข้าถึง Sheet กับบัญชี Quickchat AI ด้วย

บอตบันทึกค่าใช้จ่ายบน Telegram นี้ใช้ฟรีหรือไม่?

การสร้างบอต Telegram ฟรี แผน Free ของ Quickchat AI รองรับการเรียนรู้ส่วนบุคคลที่ไม่ใช่เชิงพาณิชย์ด้วยโควตาเครดิต AI จำกัด คำตอบ AI และ Simulation Testing ใช้เครดิต การใช้งานต่อเนื่องจึงขึ้นกับโควตาที่เหลือและแผนของคุณ

ต้องใช้ Apps Script, Python หรือเซิร์ฟเวอร์ระบบอัตโนมัติไหม?

สูตรการตั้งค่านี้ใช้ Quickchat AI Actions และสูตร Google Sheets คุณวางการตั้งค่าคำขอ เนื้อหา JSON และพรอมป์ต์ที่ให้ไว้ลงในหน้าจัดการ ไม่ต้องนำ Apps Script บอต Python หรือเซิร์ฟเวอร์ระบบอัตโนมัติไปใช้งาน

ใช้สเปรดชีตค่าใช้จ่ายที่มีอยู่แล้วได้ไหม?

สูตรการตั้งค่านี้ใช้สเปรดชีตที่สร้างโดยการเชื่อมต่อ Google Sheets ของ Quickchat AI สิทธิ์ drive.file ไม่ได้ให้เข้าถึง Drive แบบไม่จำกัด อย่าเปลี่ยน ID สเปรดชีตเป็นไฟล์เดิมใด ๆ แล้วถือว่าเข้าถึงได้

บอตอ่านรูปใบเสร็จหรือข้อความเสียงได้ไหม?

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

จัดการหลายสกุลเงินและรายการซ้ำอย่างไร?

แต่ละสกุลเงินมียอดรวมรายเดือนแยกกัน สูตรนี้ไม่แปลงสกุลเงิน การยืนยันลดรายการที่เกิดโดยไม่ตั้งใจ แต่ไม่ได้รับประกันการป้องกันซ้ำแบบอะตอมมิก หากการบันทึกหมดเวลารอ ให้ตรวจสอบ Sheet ก่อนส่งซ้ำ

Quickchat AI Quickchat AI Ask Quickchat AI a question