Automation
Google Workspace+GAS 自動化零基礎入門
用 Google Apps Script 把 Gmail、雲端硬碟、表單、試算表串成自動流程。賴家榮零基礎入門:看懂工具、拆解流程、做出第一個自動化。附完整簡報下載。
閱讀知識
把公司的常見問答放進 Google 試算表當知識庫,讓 Gemini 依知識庫內容替客服信生成回覆草稿,再用 Gmail 存成草稿讓客服校對送出。
客服信有個特色:問題很多,但重複的也很多。同樣的退換貨、運費、規格問題一天回好幾次。這篇教學把你們的標準答案整理成試算表知識庫,讓 Gemini 依這份知識庫生成回覆草稿,客服只要校對、微調就能送。既省時間,又能讓大家的回覆口徑一致。
一般 AI 直接回客服信有個風險:它可能憑印象亂答,講出你們根本沒有的政策,客戶信以為真就出事。做法的關鍵是「讓 Gemini 只根據你提供的知識庫回答」。把公司的正確說法放進試算表,Gemini 讀著它回,答案就會貼近你們真實的政策,而不是它自己想像的。
而「存成草稿、不直接寄」是刻意的設計。客服信牽涉客戶關係,全自動直接回覆風險太高。改成 Gemini 先擬草稿、客服校對後再送,等於 AI 當助理、人做最後把關,兼顧效率與品質。試算表知識庫也好維護,政策變了就改一列,全公司的回覆跟著更新,不用每個人各記一套。
動作新建一份 Google 試算表,第一列打欄位:問題、標準答案,往下把常見問答一列列填好。
常見地雷答案寫清楚完整,Gemini 才有料可依,模糊的答案會生出模糊的回覆。
動作到 aistudio.google.com 建立 API 金鑰並複製。
常見地雷金鑰只完整顯示一次,先貼到安全處存好。
動作打開 script.google.com 建新專案,清空預設函式。
常見地雷取個好認的名字,例如「客服回覆草稿」。
動作在「專案設定→指令碼屬性」新增 GEMINI_API_KEY,值貼上金鑰。
常見地雷名稱大小寫完全一致,不能有多餘空格。
動作把下方第一段程式碼原封不動貼進編輯器。
常見地雷共用工具,網址與參數都別改。
動作貼上第二段 draftSupportReply,把 KB_SHEET_ID 換成知識庫試算表 ID,並把客戶問題與客戶信箱填進去。
常見地雷試算表 ID 是網址 /d/ 與 /edit 之間那串,別貼整段網址。
動作選 draftSupportReply 按執行,授權讀試算表與建立 Gmail 草稿。
常見地雷未驗證提示點「進階→前往」繼續即可。
動作到 Gmail 的「草稿」匣,會看到生成的回覆,校對、微調後再按送出。
常見地雷草稿不會自動寄出,一定要人工確認內容正確才送給客戶。
第一段是共用的 askGemini 函式,把文字送給 Gemini 並取回回覆,請原封不動貼上。
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();
}
第二段是主流程。它先用 SpreadsheetApp 把整份知識庫讀成「問題/答案」文字,連同客戶問題一起送給 Gemini,並要求「只依知識庫回答、資料不足就據實說會轉專人」,最後用 GmailApp.createDraft 存成草稿。
function draftSupportReply() {
const KB_SHEET_ID = '你的知識庫試算表ID'; // 換成知識庫試算表 ID
const customerEmail = 'customer@example.com'; // 客戶信箱
const question = '請問你們的運費怎麼算?可以貨到付款嗎?'; // 客戶問題
// 讀取知識庫(第一欄問題、第二欄答案),跳過標題列
const rows = SpreadsheetApp.openById(KB_SHEET_ID).getSheets()[0].getDataRange().getValues();
const kb = rows.slice(1).map(function(r){ return 'Q: ' + r[0] + '\nA: ' + r[1]; }).join('\n\n');
const prompt = '你是客服專員。以下是公司知識庫,請「只根據知識庫內容」回答客戶問題,' +
'不要自行編造政策。若知識庫沒有相關資訊,請客氣地說明會為對方轉由專人處理。' +
'語氣禮貌親切,用繁體中文,直接給回信內文。\n\n【知識庫】\n' + kb +
'\n\n【客戶問題】\n' + question;
const reply = askGemini(prompt);
GmailApp.createDraft(customerEmail, '回覆您的來信', reply);
Logger.log('已建立回覆草稿,寄件對象:' + customerEmail);
}
流程刻意在最後留一個「人」:客戶問題與知識庫是輸入,一封待校對的草稿是輸出,中間 Gemini 依知識庫擬稿,但送不送、怎麼改由客服決定。這樣既拿到 AI 的速度,又保住客服信該有的謹慎。
因為客服信直接關係到客戶關係與公司信譽,全自動寄出風險太高,萬一 AI 誤解問題或答錯政策,客戶就收到錯的回覆了。存成草稿讓客服當最後一關,看過、改過再送,等於 AI 幫你打好底稿、人做把關。等你長期信任品質後,特定簡單類型也可以考慮自動送,但一開始留人審核最穩。
只要 prompt 有把它綁住,風險會低很多。這篇的關鍵就是明講「只根據知識庫回答,沒有就說會轉專人」,讓它別自由發揮。不過 AI 仍非百分百聽話,所以才要人工校對草稿。你也可以把知識庫寫得更完整、更明確,Gemini 有料可依,亂編的機會自然更小。
從你最常被問的十幾二十題開始就很有感,這些通常佔了客服信一大半。之後每遇到新問題,就把它的標準答案補進試算表,知識庫會越養越好用。重點是答案要寫清楚完整,模糊的答案會讓 Gemini 生出模糊的回覆,寧可一開始少幾題但每題都寫扎實。
會有影響,內容太多不但慢、成本高,也可能讓重點被稀釋。做法是在知識庫加「分類」或「關鍵字」欄位,程式先依客戶問題挑出相關的幾條再送,而不是整本丟進去。這樣回覆更聚焦,也更省。題庫不大時直接全送沒問題,大了再做這層篩選。
打開你的知識庫試算表,網址像 docs.google.com/spreadsheets/d/xxxxx/edit,中間那串 xxxxx(在 /d/ 和 /edit 之間)就是 ID。複製那一段貼到程式的 KB_SHEET_ID,不要貼整個網址,否則程式讀不到知識庫。
可以,這是很自然的進階做法。用 GmailApp.search 抓某個標籤或未讀的客服信,取出寄件者和內文當作客戶問題,跑完流程後把草稿建在那封信底下。這樣就從「手動貼問題」升級成「自動處理進線信」,客服打開草稿匣就有一批擬好的回覆等著校對。
可以,直接在 prompt 裡描述你要的語氣即可,例如「親切口語」「正式專業」「簡潔有力」。你也可以要求固定的開頭問候與結尾署名,讓每封回覆風格一致、有品牌感。多試幾種寫法,找到最符合你們客服調性的那一種,再固定下來。
為了安全。金鑰是你 Gemini 帳號的通行證,若寫死在程式碼裡,一旦分享或外流就可能被盜用、費用算你頭上。放進指令碼屬性等於收進保險箱,程式讀得到,但不會出現在你分享出去的程式碼裡,這是官方建議、也是團隊協作時最該遵守的一條。
客戶問題與知識庫會送到 Gemini API 處理,這跟使用任何雲端 AI 服務一樣。若信件含個資(姓名、訂單、電話),建議先評估公司政策,或在送出前把敏感欄位去識別化。程式本身跑在你自己的 Google 帳號、草稿也建在你自己的 Gmail,金鑰收在指令碼屬性,這幾層是可控的。
不會,反而讓客服更有餘裕做有溫度的事。重複、制式的問題交給草稿快速處理,客服省下的時間可以花在真正需要同理與判斷的疑難個案上。而且草稿只是底稿,客服校對時本來就會依客戶語氣調整,最終送出的仍是經過人潤飾的回覆,並不冷冰冰。
把常見問答變成會生草稿的知識庫,客服的重複勞動一下少了一大截,回覆口徑也統一了。學會這招之後,可以再接上自動抓進線信、依分類挑知識、加上簽名範本,讓客服流程從「每封重打」變成「校對即送」,服務品質和速度同時往上走。
想讓團隊用 AI+自動化把重複工作交給流程?賴家榮提供 Workspace/GAS/Gemini 企業內訓與大學課程。
預約授課・免費諮詢本文為賴家榮 AI 教學中心原創教學內容;想讓團隊學會用 AI,歡迎看AI 課程或預約授課 →
代表圖片來源:圖片來源:Pexels