Automation
Google Workspace+GAS 自動化零基礎入門
用 Google Apps Script 把 Gmail、雲端硬碟、表單、試算表串成自動流程。賴家榮零基礎入門:看懂工具、拆解流程、做出第一個自動化。附完整簡報下載。
閱讀知識
報帳季一到,桌上一疊發票收據要一張張登進 Excel:抬頭、日期、金額、品項……眼睛都花了。這篇教學要讓 Gemini 讀懂發票上的文字,自動抓出金額、日期、品項,直接填進 Google 試算表,把登帳這件苦差事交給程式。
完成後你會有一個『貼發票文字進去、帳目自己長出來』的記帳工具,個人報帳、小店營運登帳都能用,省下大量手動輸入。
手動登帳的痛不只是慢,還很容易看錯數字、打錯日期,一錯就要對很久。發票版面又五花八門,總額位置、日期寫法都不一樣,傳統靠固定規則抓很難通用。Gemini 能理解語意,不管發票怎麼排版,都能找出你要的欄位,容錯力高很多。
接到試算表後,資料一進表格就能用公式加總、依月份篩選、直接生報表。等於把『看發票』和『登帳、統計』一次打通。你只要把發票文字貼進來,剩下的解析、格式化、寫入都自動完成,報帳從此不再是惡夢。
動作開一份新的 Google 試算表,第一列打上標題:日期、店家、金額、品項。資料會一列列往下加。
常見地雷標題順序要和程式的欄位清單一致,否則資料會錯位。
動作點『擴充功能 → Apps Script』開啟編輯器。
常見地雷用電腦版才有『擴充功能』。
動作『專案設定 → 指令碼屬性』新增 GEMINI_API_KEY,貼上金鑰並儲存。
常見地雷金鑰別寫進程式碼。
動作清空編輯器,貼上下方第一段共用函式。
常見地雷照抄,別漏字元。
動作貼上第二段主流程,它會請你貼上發票文字,讓 Gemini 依 FIELDS 萃取成 JSON,統一金額與日期格式後寫入試算表。
常見地雷FIELDS 要和第一列標題一致、順序相同。
動作存檔後回試算表按 F5,稍等會出現『AI 記帳』選單。
常見地雷沒出現多半是 onOpen 沒存到。
動作點『AI 記帳 → 貼上發票萃取』,第一次依提示完成授權。
常見地雷『尚未驗證』屬正常,允許即可。
動作在對話框貼上一張發票的文字,按確定。稍等後表格會多出一列填好的帳目,確認金額與日期對不對。
常見地雷金額若含幣別符號沒轉成數字,檢查提示詞是否要求『金額只保留數字』。
下面第一段是共用的 askGemini 函式,直接照抄不用改。
function askGemini(prompt) {
const key = PropertiesService.getScriptProperties().getProperty('GEMINI_API_KEY');
const url = 'https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent?key=' + key;
const payload = { contents: [{ parts: [{ text: prompt }] }] };
const res = UrlFetchApp.fetch(url, { method:'post', contentType:'application/json', payload: JSON.stringify(payload), muteHttpExceptions:true });
return JSON.parse(res.getContentText()).candidates[0].content.parts[0].text.trim();
}
第二段是主流程:請你貼上發票文字,讓 Gemini 依 FIELDS 萃取成 JSON,並要求金額為純數字、日期為 YYYY-MM-DD,解析後用 SpreadsheetApp 寫入一列。
const FIELDS = ['日期', '店家', '金額', '品項']; // 要和第一列標題一致
function onOpen() {
SpreadsheetApp.getUi()
.createMenu('AI 記帳')
.addItem('貼上發票萃取', 'extractInvoice')
.addToUi();
}
function extractInvoice() {
const ui = SpreadsheetApp.getUi();
const resp = ui.prompt('請貼上發票或收據的文字:');
if (resp.getSelectedButton() !== ui.Button.OK) return;
const text = resp.getResponseText().trim();
if (!text) return;
const prompt =
'你是記帳助理。請從以下發票/收據文字萃取欄位,只回傳一個 JSON 物件' +
'(不要程式碼標記或說明)。欄位:' + FIELDS.join('、') + '。' +
'規則:日期用 YYYY-MM-DD 格式;金額只保留數字(去掉幣別與逗號,取總金額);' +
'品項若有多項用頓號串起來;找不到的欄位填空字串。\n\n文字:\n' + text;
let raw = askGemini(prompt).replace(/```json|```/g, '').trim();
let data;
try {
data = JSON.parse(raw);
} catch (err) {
ui.alert('解析失敗,Gemini 回傳內容:\n' + raw);
return;
}
const row = FIELDS.map(function(f) { return data[f] || ''; });
SpreadsheetApp.getActiveSheet().appendRow(row);
ui.alert('已萃取並寫入一筆帳目。');
}
存檔、重新整理、從選單執行,貼上發票文字,帳本就會多一列。金額被統一成純數字後,你就能直接用試算表的 SUM 依月份加總報表。要批次處理很多張,可把文字放某欄,用迴圈逐筆萃取寫入。
這流程的重點是『在提示詞裡規範格式』——要求日期統一、金額純數字,寫進表格後才能直接算。掌握『收文字 → 要規格化 JSON → 寫入表格』的模式,各種單據建檔都能照這套骨架做。
本文流程處理的是『文字』,所以要先把照片變成文字。最簡單的方式是用手機相簿的文字辨識功能,或把照片上傳到 Google 雲端硬碟、用 Google 文件開啟就會自動 OCR 成文字,再把文字貼進本工具萃取。若要全自動,可再進一步串接 OCR 服務,但入門建議先手動取得文字,把萃取流程跑順。
因為格式統一後,資料寫進表格才能直接運算。日期若一下寫『2026/7/1』一下寫『七月一日』,就沒辦法排序、篩月份;金額若帶著幣別符號和逗號,就不能直接 SUM 加總。在提示詞明確要求日期用 YYYY-MM-DD、金額只留數字,等於請 Gemini 幫你先把資料洗乾淨,後續報表省事很多。
在提示詞明確寫『取應付總金額/實付金額,不是小計或單價』就能改善。發票上常有多個數字,講清楚要哪一個很重要。若某些格式特別容易誤判,可以在提示詞補一句範例說明。抓錯時別急著改程式,先優化提示詞的描述,通常就能解決大部分問題。
很常見。兩道防線:提示詞要求『只回傳 JSON、不要程式碼標記或說明』;程式裡用 replace 去掉三個反引號與 json 字樣。本文還把 JSON.parse 包在 try/catch,失敗時直接把原始回應顯示出來,你就能看到它到底回了什麼、據此調整提示詞。這樣既穩定,出錯時也好除錯。
可以,實務上也建議這樣。把每張發票的文字放在試算表某一欄,改寫主流程用迴圈逐列讀取、呼叫 Gemini、把結果寫到同列其他欄。要注意張數多時呼叫次數也多,可能碰到 Apps Script 執行時間上限,量大就分批或用觸發器分次跑。本文先示範單筆,是為了讓入門最容易上手。
看你的需求。若只是要有個紀錄,讓 Gemini 用頓號把品項串在一格最簡單,本文就是這樣。若你需要逐項分析(例如統計買了多少某類商品),就改成讓它回傳品項陣列,再用迴圈把每個品項寫成一列,或另開明細分頁。先用單格版起步,有進一步分析需求時再升級結構。
萃取時文字會送到 Google 的 API 處理,和使用雲端服務一樣。一般個人報帳影響不大,但發票可能含統編、金額等營運資訊,公司使用前請先確認內部規範。稅務上,正式帳務仍應以官方發票與會計系統為準,本工具適合當『快速整理與初步彙整』,最終數字建議再由財會人員核對。
Gemini API 有免費額度,一般記帳量通常都在免費範圍內。用量看你處理幾張、每張文字多長。單張手動貼幾乎不花什麼;大量批次時消耗較快。建議先用免費額度把流程跑順,再依實際張數評估。用 flash 版模型做萃取,速度快又省錢,很適合這類量大但單筆不複雜的任務。
可以,很有彈性。在 FIELDS 陣列加上新欄位、同步在第一列加對應標題即可,主流程不用改。若新欄位有特別格式(例如稅額也要純數字),記得在提示詞的規則裡補上說明。欄位由清單驅動,擴充只是加資料,這讓工具能隨你的記帳需求慢慢長大。
可以進一步結合 GmailApp。用觸發器定時讀取含電子發票的信件,把內文丟進本文的萃取流程,再寫入帳本,就變成『發票一寄到就自動入帳』。本文先聚焦把發票文字萃取成帳目這個核心;等你熟悉後,再接上 Gmail 讀信與觸發器,就能組成幾乎全自動的記帳管線。
你已經做出一個能把發票文字自動變成帳目的記帳工具。掌握『收文字 → 要規格化 JSON → 寫入試算表』的套路,報帳與登帳就能大幅自動化。想帶團隊系統化導入,歡迎進一步了解。
想讓團隊用 AI+自動化把重複工作交給流程?賴家榮提供 Workspace/GAS/Gemini 企業內訓與大學課程。
預約授課・免費諮詢本文為賴家榮 AI 教學中心原創教學內容;想讓團隊學會用 AI,歡迎看AI 課程或預約授課 →
代表圖片來源:圖片來源:Pexels