2026年9月12日 星期六

【教學】把 LINE 變成智慧記帳小幫手!Google Apps Script 串接 Gemini AI:一句話、一張發票照片自動寫入 Google 試算表

 

前言:為什麼要自己做 LINE 記帳機器人?

過去我曾使用過 AppSheet 等工具來打造個人記帳系統,功能雖然齊全,但每次要記帳都必須特地打開 App、點選表單、手動輸入數字與項目,久了難免覺得繁瑣、容易偷懶中斷。

我不禁思考:「能不能直接在每天都在用的 LINE 裡面,隨手傳一句話(例如『早餐 80 元』)或是直接拍一張收據發票照片,就讓 AI 自動辨識並幫我寫入資料庫?」

為了實現這個想法,我請 Google AI Studio 協助撰寫 Google Apps Script(GAS),串接 Gemini 1.5 Flash 模型與 LINE Messaging API,成功打造出這款隨傳隨記的「AI 記帳小幫手」!


系統架構與運作流程

整個自動化記帳的運作邏輯如下:

  1. 使用者端:在專屬的 LINE 官方帳號/聊天室中傳送純文字或消費明細/收據照片。

  2. LINE Webhook:將訊息推送到部署好的 Google Apps Script(GAS)

  3. Gemini AI 辨識:GAS 將文字或圖片送到 Google AI Studio(Gemini API) 進行自然語言理解與圖片文字辨識(OCR),萃取出「日期、收支類型、項目分類、消費項目、金額、付款方式」等結構化資料。

  4. 寫入試算表:解析完成的資料自動追加到 Google 試算表(Google Sheets) 的最新一列。


事前準備工作(三大要素)

在開始撰寫程式碼之前,需要先備妥以下三項資源:

1. 建立 Google 試算表

  • 新增一張空的 Google 試算表,記錄網址中的 試算表 ID(Spreadsheet ID)

  • 在第一行(標頭)依序設定欄位:

    • 日期分類(收/支)項目金額付款方式記帳時間備註

2. 申請 LINE Developers Messaging API

  • 前往 LINE Developers 註冊並建立一個新的 Provider 與 Messaging API Channel

  • 在「Messaging API」設定頁籤中,發行並複製 Channel Access Token(長期憑證)

  • 重要提醒:記得在 LINE Official Account Manager 後台關閉「自動回應訊息」,並開啟「Webhook」,避免 LINE 預設的自動回應干擾機器人。

3. 取得 Google Gemini API Key

  • 前往 Google AI Studio 登入 Google 帳號。

  • 點擊 Get API Key,建立並複製專屬的 API 金鑰。


開發過程與 AI Studio 除錯實戰

透過 Google AI Studio 生成程式碼雖然快速,但在實際串接時難免會遇到環境與版本變更的問題。以下是我在與 AI 對話互動、除錯時的實務經驗:

1. 為什麼選擇 Gemini 1.5 Flash?

  • 回應速度快:相較於 Pro 版本,Flash 的延遲極低,非常適合聊天機器人即時回應。

  • 視覺辨識能力強:無需手動撰寫複雜的正規表達式(Regex),即可精準辨識發票上的日期、消費明細與總金額。

  • 免費額度充裕:AI Studio 提供非常慷慨的免費額度,完全能滿足個人日常記帳需求。

2. 遇見 API 版本錯誤(404 / Model Not Found)

在測試初期,原本程式碼調用的模型名稱過舊,出現了 API 報錯。

  • 解決方式:讓 AI Studio 寫了一段簡單的「診斷工具」程式碼(呼叫 ListModels API),列出目前 API Key 支援的所有可用模型清單,確認當前支援的最新名稱(如 gemini-1.5-flash-latest 或預覽版本)後替換即可正常運作。

3. 流量過大(High Demand)的使用者友善提示

當免費版 API 瞬間請求過多時,可能會出現 HTTP 429 或 503 繁忙錯誤。

  • 原本系統會直接噴出冰冷的錯誤程式碼,讓使用者一頭霧水。

  • 我請 AI 修改 try-catch 區塊,將錯誤訊息改為溫馨提示:

    「系統現在有點忙碌,請 10 秒後再試一次,或檢查一下輸入格式!」

4. 解決年份記憶偏差與擴充「付款方式」

  • 日期校正:AI 有時會受到模型訓練切點影響,預設為過去的年份。因此在 GAS 送出 Prompt 時,務必直接將**當前系統日期(Current Date)**動態代入 Prompt 中,讓 AI 有明確的時間基準。

  • 擴充付款方式:後續只要跟 AI 說:「我想加入付款方式(現金、信用卡、LINE Pay、iPASS Money 等)」,AI 就會自動更新 Prompt 與解析格式,並重新給出完整的 GAS 程式碼。


實測成果展示

完成 GAS 部署並將 Webhook 網址填回 LINE Developers 後,實際測試效果非常驚豔:

1. 文字隨手記

  • 輸入買早餐 80元

  • LINE 回應與寫入

    • 類型:支出

    • 分類:餐飲

    • 項目:早餐

    • 金額:80

    • 付款方式:現金

2. 圖片拍照即記(發票 / 收據)

  • 發票實測 1(威秀影城):直接拍下兩張電影票與刷卡簽單,AI 自動辨識為「支出 / 娛樂 / 威秀影城(希望:末日水戰電影票) / 金額 222 / 信用卡」。

  • 收據實測 2(醫院看診單):拍下新竹馬偕醫院回診收據,AI 自動抓出「支出 / 醫療 / 新竹馬偕紀念醫院看診費 / 金額 570」。

3. 試算表統計分頁

所有透過 LINE 傳送的資料都會即時寫入試算表第一頁;另外建立第二張統計工作表,透過公式彙整每月在餐飲、水電、交通、醫療等各類別的總支出與總收入,每個月的財務狀況一目了然!


實用小技巧

  • LINE 聊天室置頂:將這個記帳機器人聊天室在手機端「設為置頂(Pin)」,買完東西拿起手機花三秒鐘打個字或拍張照,從此不再忘記記帳!

  • 善用完整程式碼提示:如果對程式碼不熟悉,當 AI 提供片段修改時,可以直接告訴它:「請給我完整的程式碼」,直接全選複製貼上到 GAS,避免手動拼接出錯。



沒有留言:

張貼留言

【教學】把 LINE 變成智慧記帳小幫手!Google Apps Script 串接 Gemini AI:一句話、一張發票照片自動寫入 Google 試算表

  前言:為什麼要自己做 LINE 記帳機器人? 過去我曾使用過 AppSheet 等工具來打造個人記帳系統,功能雖然齊全,但每次要記帳都必須特地打開 App、點選表單、手動輸入數字與項目,久了難免覺得繁瑣、容易偷懶中斷。 我不禁思考: 「能不能直接在每天都在用的 LINE 裡面...