Automation
Google Workspace+GAS 自動化零基礎入門
用 Google Apps Script 把 Gmail、雲端硬碟、表單、試算表串成自動流程。賴家榮零基礎入門:看懂工具、拆解流程、做出第一個自動化。附完整簡報下載。
閱讀知識
客服信箱一多,最累的往往不是回信,而是「先看懂這封是誰該處理」。這篇會帶你用 Gemini 幫每封新進客服信自動分類,再用 Apps Script 的 GmailApp 把信轉寄給對應窗口,讓分流這件雜事交給流程自己跑。
完成後,你的客服信箱會像有一位不睡覺的分信助理:新信一進來,幾分鐘內就被判讀、貼標籤並送到正確的人手上。你只要專注在真正需要人回覆的內容,而不是把時間花在「這封該給誰」。
很多團隊的客服信箱是共用的,所有人都盯著同一個收件匣,結果就是同一封信三個人看、或是每封信都沒人認領。人工分信不但慢,還很容易漏,尤其在旺季量大的時候,光是「先分類」就吃掉大半精力。
把分類交給 Gemini、把轉寄交給 GmailApp,等於把「判斷 + 派件」這段重複勞動自動化。Gemini 能理解自然語言,不像關鍵字比對那樣死板;GAS 又完全長在 Google 帳號裡,不用額外系統。兩者一搭,小團隊也能擁有接近客服系統的自動分流能力,而且維護成本極低。
動作到 script.google.com 按「新專案」,把預設檔名改成好記的名字,例如「客服自動分流」。
常見地雷第一次執行時會要求授權存取 Gmail,請用你要處理客服信的那個帳號登入授權。
動作點左側齒輪「專案設定」,在「指令碼屬性」新增一組屬性,名稱填 GEMINI_API_KEY,值貼上你的金鑰。
常見地雷千萬別把金鑰直接寫在程式碼裡,否則分享專案或誤外流時金鑰就外洩了。
動作把下方第一段共用函式原封不動貼進編輯器,它負責呼叫 Gemini 並取回純文字結果。
常見地雷模型名稱要用 gemini-2.5-flash,若改成不存在的名稱會回 404。
動作在主流程裡把信件主旨與內文組成 prompt,明確要求 Gemini 只回傳一個類別代碼,避免它多話。
常見地雷提示詞要限制輸出格式,例如「只回一個詞」,否則回傳多餘句子會讓後面比對失敗。
動作用一個物件把分類結果對應到同事的 Email,例如 refund 對應退換貨窗口的信箱。
常見地雷類別代碼要和提示詞裡列出的完全一致,大小寫也要對得上。
動作用 GmailApp.search 找出未處理的客服信,逐封取得內容、分類、轉寄給對應同事,再貼上已處理標籤。
常見地雷一定要貼標籤或標記,否則下次執行會重複轉寄同一封信。
動作先寄幾封測試信到客服信箱,按執行 routeSupportMail,到「執行紀錄」看分類與轉寄是否正確。
常見地雷免費額度有速率限制,測試時別一次塞太多封,分批跑比較穩。
動作點左側時鐘圖示「觸發條件」,新增一個時間驅動觸發器,每 5 或 10 分鐘執行 routeSupportMail。
常見地雷間隔別設太短,太頻繁容易撞到 API 限制,也會浪費執行配額。
下面第一段是共用的 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();
}
接著是主流程 routeSupportMail:抓未處理客服信、用 Gemini 分類、依對應表轉寄,最後貼標籤避免重複。請把負責人的 Email 換成你團隊真實的信箱。
function routeSupportMail() {
// 分類 -> 對應同事 Email
const ROUTES = {
refund: 'refund@your-company.com', // 退換貨
billing: 'billing@your-company.com', // 帳務
tech: 'tech@your-company.com', // 技術支援
other: 'service@your-company.com' // 一般諮詢
};
const DONE_LABEL = '已分流';
const label = GmailApp.getUserLabelByName(DONE_LABEL) || GmailApp.createLabel(DONE_LABEL);
// 只找收件匣中尚未貼上「已分流」標籤的信
const threads = GmailApp.search('in:inbox -label:' + DONE_LABEL, 0, 10);
threads.forEach(function (thread) {
const msg = thread.getMessages()[0];
const subject = msg.getSubject();
const body = msg.getPlainBody().slice(0, 1500);
const prompt = '你是客服信件分類器。請判斷下列信件屬於哪一類,只回傳一個代碼,不要多餘文字。\n'
+ '可選代碼:refund(退換貨)、billing(帳務、發票、付款)、tech(技術問題、無法使用)、other(其他一般諮詢)。\n'
+ '主旨:' + subject + '\n內文:' + body;
let cat = askGemini(prompt).toLowerCase();
if (!ROUTES[cat]) cat = 'other'; // 防呆:非預期結果一律歸為 other
GmailApp.sendEmail(ROUTES[cat],
'[自動分流] ' + subject,
'這封客服信被判定為「' + cat + '」類,請接手處理。\n\n--- 原文 ---\n' + body);
thread.addLabel(label); // 貼標籤,避免下次重複轉寄
});
}
整條流程沒有任何一步需要你動手:從新信進來到派到正確的人,都由觸發器帶著跑。你只需要偶爾看一下「執行紀錄」確認一切正常,或在類別對應表增修窗口。
會,任何 AI 都可能出錯,尤其是內容模糊、跨類別的信。建議一開始把觸發器設得保守一點,並每天抽看幾封確認準確度。你也可以在提示詞裡多給幾個範例,或加一條規則讓 Gemini 不確定時回 other,由人工再判斷,這樣就不會把重要的信送錯窗口。
不用。Google AI Studio 提供免費額度,對小團隊的客服信量通常綽綽有餘,很適合先跑起來驗證效果。若日後信量大到超過免費額度,再考慮升級付費方案即可,屆時只要沿用同一組金鑰、不必改程式碼。
因為把金鑰寫死在程式碼裡很危險,一旦分享專案、截圖或匯出,金鑰就可能外流,別人就能用你的額度。PropertiesService 把金鑰存在專案設定裡,程式用 getProperty 讀取,既安全又方便,換金鑰時也只要改設定不用動程式。
只要照教學貼上「已分流」標籤就不會。每次執行都用 -label:已分流 過濾掉處理過的信,所以已經派過的信下次不會再被撈到。若你發現仍有重複,通常是標籤名稱打錯或漏了 addLabel 那一行,檢查一下即可。
看得到。這套做法是「轉寄副本」給同事,原信仍留在客服信箱並貼上標籤,方便你日後查核與備份。如果你希望同事直接在共用信箱回覆,也可以改成只貼標籤 + 通知,不寄副本,依團隊習慣調整即可。
可以,而且很簡單。在 ROUTES 對應表加一個新代碼與對應 Email,再到提示詞的「可選代碼」清單補上同一個代碼與說明就完成了。兩邊代碼務必一致,Gemini 才知道有這個選項、程式也才找得到對應窗口。
客服講求時效,一般設每 5 到 10 分鐘就很夠。間隔太短容易撞到 API 速率限制、也浪費配額;太長則客戶等太久。建議先用 10 分鐘觀察,若覺得回應不夠即時再縮短,找到準確與時效的平衡。
可能會,過長內容會消耗較多 token、也可能超過限制。教學裡用 slice 只取前段內文送去分類,通常足以判斷類別。若某些信非得看全文才分得出來,可以適度加長截斷字數,但別整封塞進去,兼顧成本與速度。
不用太深。日常維護多半只是改對應表的 Email、微調提示詞文字,這些都是複製貼上等級的修改。真正的邏輯已經寫好且註解清楚,看得懂中文說明就能上手。若要做較大改動,再找懂 GAS 的同事或參考官方文件即可。
不會。程式只做三件事:讀取、寄出副本、貼標籤,完全沒有刪除或封存的動作。你原本的信件都安全保留。若不放心,第一次可以先在測試帳號或測試標籤上試跑,確認行為都符合預期後,再套用到正式客服信箱。
把「判斷該給誰」交給 Gemini、把「派件」交給 GAS,你的客服團隊就能少掉一大段重複勞動,把時間留給真正需要人情味的回覆。如果想把這套流程完整落地到團隊,甚至擴充成更完整的客服自動化,可以找專人帶著做。
想讓團隊用 AI+自動化把重複工作交給流程?賴家榮提供 Workspace/GAS/Gemini 企業內訓與大學課程。
預約授課・免費諮詢本文為賴家榮 AI 教學中心原創教學內容;想讓團隊學會用 AI,歡迎看AI 課程或預約授課 →
代表圖片來源:圖片來源:Pexels