Automation
Google Workspace+GAS 自動化零基礎入門
用 Google Apps Script 把 Gmail、雲端硬碟、表單、試算表串成自動流程。賴家榮零基礎入門:看懂工具、拆解流程、做出第一個自動化。附完整簡報下載。
閱讀知識
客戶留言、諮詢信件、報名文字,內容常常長得亂七八糟:有人把電話寫在句子中間、有人需求寫一大段。人工一筆一筆抓進表格很折磨。這篇教學要讓 Gemini 幫你讀懂這些散亂文字,自動抓出你要的欄位,直接填進 Google 試算表。
完成後你會有一個『貼文字進去、表格自己長出來』的整理工具,客服彙整、名單建檔都能用,省下大把手動打字時間。
人工從文字裡抓欄位有兩個痛點:慢,還有累了會抓錯。尤其格式不統一時——有人寫『手機 0912…』、有人寫『我的電話是…』——傳統用關鍵字或正則很難全部涵蓋。Gemini 能理解語意,不管對方怎麼寫,都能找出你要的資訊,容錯力遠高於死板的規則。
把它接到試算表,等於把『讀懂文字』和『填進表格』兩件事一次搞定。你只要貼上原始文字,剩下的解析與寫入都交給程式。資料一進表格就能排序、篩選、做報表,後續分析全部順下去,不再卡在整理這一步。
動作開一份新的 Google 試算表,第一列先手動打上標題:姓名、電話、Email、需求。之後資料會一列一列往下加。
常見地雷標題順序要跟程式裡的欄位清單一致,否則資料會錯位。
動作點『擴充功能 → Apps Script』開啟編輯器。
常見地雷用電腦版才有『擴充功能』。
動作『專案設定 → 指令碼屬性』新增 GEMINI_API_KEY,貼上金鑰並儲存。
常見地雷金鑰別寫進程式碼。
動作清空編輯器,貼上下方第一段共用函式。
常見地雷照抄,別漏字元。
動作貼上第二段主流程,它會用對話框請你貼上原始文字,讓 Gemini 依 FIELDS 清單萃取成 JSON,再寫入試算表。
常見地雷FIELDS 陣列要和第一列標題一模一樣、順序相同。
動作存檔後回試算表按 F5,稍等會出現『AI 萃取』選單。
常見地雷沒出現多半是 onOpen 沒存到。
動作點『AI 萃取 → 貼上文字萃取欄位』,第一次依提示完成授權。
常見地雷『尚未驗證』屬正常,允許即可。
動作在跳出的對話框貼一段留言,按確定。稍等 Gemini 回應,表格就會多出一列填好的欄位。
常見地雷若某欄空白,代表文字裡沒有那項資訊,屬正常;若全錯,檢查 FIELDS 與標題是否一致。
下面第一段是共用的 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,解析後用 SpreadsheetApp 寫成新的一列。FIELDS 要和試算表第一列標題一致。
const FIELDS = ['姓名', '電話', 'Email', '需求']; // 要和第一列標題一致
function onOpen() {
SpreadsheetApp.getUi()
.createMenu('AI 萃取')
.addItem('貼上文字萃取欄位', 'extractFields')
.addToUi();
}
function extractFields() {
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('、') + '。找不到的欄位請填空字串。\n\n文字:\n' + text;
let raw = askGemini(prompt);
raw = raw.replace(/```json|```/g, '').trim(); // 保險:去掉可能的程式碼標記
const data = JSON.parse(raw);
const row = FIELDS.map(function(f) { return data[f] || ''; });
SpreadsheetApp.getActiveSheet().appendRow(row);
ui.alert('已萃取並寫入一列資料。');
}
存檔、重新整理、從選單執行,貼上一段文字,表格就會多出整理好的一列。若你要批次處理很多筆,可把 prompt 換成從某欄讀入多筆文字、用迴圈逐筆萃取寫入。
這流程的關鍵是『要求 Gemini 回傳 JSON』——結構化輸出讓程式能可靠解析。掌握『收文字 → 要 JSON → 寫入表格』的模式後,各種資料建檔都能照這套骨架做出來。
因為 JSON 是有結構的格式,程式可以用 JSON.parse 精準取出每個欄位的值,寫進對應的表格欄。如果只回一段文字,程式還得自己猜哪段是姓名、哪段是電話,很不可靠。要求回傳 JSON,等於請 Gemini 幫你把資料『排好隊』,後續寫入就簡單又穩定。這是用 AI 做資料萃取的關鍵技巧。
這很常見。兩道防線:一是提示詞明確要求『只回傳 JSON,不要加任何程式碼標記或說明』;二是程式裡用 replace 把可能的三個反引號與 json 字樣去掉,就像本文範例。再保險一點,把 JSON.parse 包進 try/catch,萬一還是失敗就記錄原始回應、跳過該筆,不讓整批中斷。
欄位抓空通常代表原始文字裡真的沒有那項資訊,屬正常,本文設計成填空字串讓你事後補。若是抓錯(例如把地址塞進電話),多半是提示詞不夠明確,可以補上欄位說明,例如『電話:只保留數字的聯絡電話』。把每個欄位定義寫清楚,準確度會明顯提升。
順序要一致才不會錯位,因為程式是依 FIELDS 的順序把值排成一列寫入。名稱本身不一定要和標題文字完全相同,但強烈建議一致,這樣你一眼就能對照、日後維護也不會混亂。改欄位時記得同步改 FIELDS 和第一列標題兩處,避免資料跑到錯的欄。
可以,這也是實務上最常見的用法。把原始文字放在試算表某一欄,改寫主流程用迴圈逐列讀取、呼叫 Gemini、把結果寫到同列的其他欄。要注意筆數多時呼叫次數也多,可能碰到執行時間上限,量大就分批跑或用觸發器。本文先示範單筆,是為了讓入門最好懂。
萃取時文字會送到 Google 的 API 處理,這點和使用任何雲端服務一樣。一般諮詢留言影響不大,但若含身分證、金融等高度敏感資料,請先評估公司規範或改用企業方案。原則是:高敏感個資盡量不要丟進外部 API,或先去識別化。把合規放在自動化之前,才走得長久。
把 JSON.parse 用 try/catch 包起來就能避免。解析成功就正常寫入;失敗就在 catch 裡把原始回應寫進另一欄或記到 Logger,然後跳過這一筆繼續。這樣就算偶爾一筆格式怪掉,也不會拖垮整批。做批次處理時,這種『容錯不中斷』的寫法特別重要。
Gemini API 有免費額度,一般整理量通常都在免費範圍內。用量主要看你處理幾筆、每筆文字多長。單筆手動貼幾乎不用擔心;大量批次時消耗會快一些。建議先用免費額度把流程跑順,再依實際筆數評估是否升級。用 flash 版模型做萃取,速度快又省,很划算。
可以,非常有彈性。只要在 FIELDS 陣列裡加上新欄位、同步在第一列加上對應標題即可,主流程完全不用改。Gemini 會依你給的欄位清單去文字裡找。想抓什麼就加什麼,這也是本工具好用的地方——欄位由資料驅動,擴充只是改清單,不必動邏輯。
可以進一步結合 GmailApp。用觸發器定時讀取特定標籤的新信,把信件內文丟給本文的萃取流程,再寫入試算表,就變成『新信一到就自動建檔』。本文先聚焦在把文字萃取成欄位這個核心;等你熟悉後,再接上 Gmail 讀信與觸發器,就能組成完整的自動化管線。
你已經做出一個能把散亂文字自動整理成表格的萃取工具。掌握『收文字 → 要 JSON → 寫入試算表』的套路,資料建檔就能大幅自動化。想帶團隊系統化導入,歡迎進一步了解。
想讓團隊用 AI+自動化把重複工作交給流程?賴家榮提供 Workspace/GAS/Gemini 企業內訓與大學課程。
預約授課・免費諮詢本文為賴家榮 AI 教學中心原創教學內容;想讓團隊學會用 AI,歡迎看AI 課程或預約授課 →
代表圖片來源:圖片來源:Pexels