首頁/AI 講義/數位工具・自動化

數位工具・自動化 · Workspace+GAS+Gemini約 12 分鐘Automation

客服信自動分類分流|Gemini+GAS 實作

客服信自動分類分流|Gemini+GAS 實作 — 賴家榮 AI 教學

Overview這篇教學會做出什麼

客服信箱一多,最累的往往不是回信,而是「先看懂這封是誰該處理」。這篇會帶你用 Gemini 幫每封新進客服信自動分類,再用 Apps Script 的 GmailApp 把信轉寄給對應窗口,讓分流這件雜事交給流程自己跑。

Key Takeaways

  • 用 Gemini 讀信件主旨與內文,判斷屬於「退換貨、帳務、技術支援、一般諮詢」哪一類。
  • 用 GmailApp 抓取未讀且未處理的客服信,逐封送去分類。
  • 依分類結果自動轉寄給對應同事,並貼上標籤避免重複處理。
  • 金鑰用 PropertiesService 保管,不會寫死在程式碼裡。
  • 設定時間觸發器,讓整套流程每幾分鐘自動執行一次。
  • 全程在 Google 帳號內完成,不需要架伺服器、不需要信用卡刷卡(Gemini 免費額度即可測試)。

完成後,你的客服信箱會像有一位不睡覺的分信助理:新信一進來,幾分鐘內就被判讀、貼標籤並送到正確的人手上。你只要專注在真正需要人回覆的內容,而不是把時間花在「這封該給誰」。

Why為什麼值得這樣做

很多團隊的客服信箱是共用的,所有人都盯著同一個收件匣,結果就是同一封信三個人看、或是每封信都沒人認領。人工分信不但慢,還很容易漏,尤其在旺季量大的時候,光是「先分類」就吃掉大半精力。

把分類交給 Gemini、把轉寄交給 GmailApp,等於把「判斷 + 派件」這段重複勞動自動化。Gemini 能理解自然語言,不像關鍵字比對那樣死板;GAS 又完全長在 Google 帳號裡,不用額外系統。兩者一搭,小團隊也能擁有接近客服系統的自動分流能力,而且維護成本極低。

Prepare開始前的準備

Checklist

  • 一個 Google 帳號,且能正常收發 Gmail。
  • 到 Google AI Studio 申請一組 Gemini API 金鑰(免費額度足以測試)。
  • 確認團隊各類別的負責同事 Email,例如退換貨、帳務、技術支援各一位。
  • 會開啟 script.google.com 建立新的 Apps Script 專案。
  • 了解基本操作:貼上程式碼、儲存、按執行、看紀錄。

Steps一步一步實作

1建立 Apps Script 專案

動作到 script.google.com 按「新專案」,把預設檔名改成好記的名字,例如「客服自動分流」。

常見地雷第一次執行時會要求授權存取 Gmail,請用你要處理客服信的那個帳號登入授權。

2存放 Gemini 金鑰

動作點左側齒輪「專案設定」,在「指令碼屬性」新增一組屬性,名稱填 GEMINI_API_KEY,值貼上你的金鑰。

常見地雷千萬別把金鑰直接寫在程式碼裡,否則分享專案或誤外流時金鑰就外洩了。

3貼上 askGemini 函式

動作把下方第一段共用函式原封不動貼進編輯器,它負責呼叫 Gemini 並取回純文字結果。

常見地雷模型名稱要用 gemini-2.5-flash,若改成不存在的名稱會回 404。

4設計分類提示詞

動作在主流程裡把信件主旨與內文組成 prompt,明確要求 Gemini 只回傳一個類別代碼,避免它多話。

常見地雷提示詞要限制輸出格式,例如「只回一個詞」,否則回傳多餘句子會讓後面比對失敗。

5建立類別對應表

動作用一個物件把分類結果對應到同事的 Email,例如 refund 對應退換貨窗口的信箱。

常見地雷類別代碼要和提示詞裡列出的完全一致,大小寫也要對得上。

6撈信並轉寄

動作用 GmailApp.search 找出未處理的客服信,逐封取得內容、分類、轉寄給對應同事,再貼上已處理標籤。

常見地雷一定要貼標籤或標記,否則下次執行會重複轉寄同一封信。

7手動測試一次

動作先寄幾封測試信到客服信箱,按執行 routeSupportMail,到「執行紀錄」看分類與轉寄是否正確。

常見地雷免費額度有速率限制,測試時別一次塞太多封,分批跑比較穩。

8設定自動觸發

動作點左側時鐘圖示「觸發條件」,新增一個時間驅動觸發器,每 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); // 貼標籤,避免下次重複轉寄
  });
}

Flow流程長怎樣

客服信自動分流流程
1客戶寄信到客服信箱
2觸發器每 5 分鐘啟動 routeSupportMail
3GmailApp 撈出未貼標籤的新信
4Gemini 讀主旨與內文回傳類別代碼
5依對應表 GmailApp 轉寄給該類別同事
6貼上「已分流」標籤避免重複
7同事在自己信箱接手回覆

整條流程沒有任何一步需要你動手:從新信進來到派到正確的人,都由觸發器帶著跑。你只需要偶爾看一下「執行紀錄」確認一切正常,或在類別對應表增修窗口。

Tips實用小技巧

FAQ常見問題

常見問題 FAQ

Gemini 分類會不會判斷錯誤?

會,任何 AI 都可能出錯,尤其是內容模糊、跨類別的信。建議一開始把觸發器設得保守一點,並每天抽看幾封確認準確度。你也可以在提示詞裡多給幾個範例,或加一條規則讓 Gemini 不確定時回 other,由人工再判斷,這樣就不會把重要的信送錯窗口。

一定要付費才能用 Gemini API 嗎?

不用。Google AI Studio 提供免費額度,對小團隊的客服信量通常綽綽有餘,很適合先跑起來驗證效果。若日後信量大到超過免費額度,再考慮升級付費方案即可,屆時只要沿用同一組金鑰、不必改程式碼。

為什麼要用 PropertiesService 存金鑰?

因為把金鑰寫死在程式碼裡很危險,一旦分享專案、截圖或匯出,金鑰就可能外流,別人就能用你的額度。PropertiesService 把金鑰存在專案設定裡,程式用 getProperty 讀取,既安全又方便,換金鑰時也只要改設定不用動程式。

會不會同一封信被重複轉寄好幾次?

只要照教學貼上「已分流」標籤就不會。每次執行都用 -label:已分流 過濾掉處理過的信,所以已經派過的信下次不會再被撈到。若你發現仍有重複,通常是標籤名稱打錯或漏了 addLabel 那一行,檢查一下即可。

轉寄後原信箱還看得到嗎?

看得到。這套做法是「轉寄副本」給同事,原信仍留在客服信箱並貼上標籤,方便你日後查核與備份。如果你希望同事直接在共用信箱回覆,也可以改成只貼標籤 + 通知,不寄副本,依團隊習慣調整即可。

可以增加新的分類嗎?

可以,而且很簡單。在 ROUTES 對應表加一個新代碼與對應 Email,再到提示詞的「可選代碼」清單補上同一個代碼與說明就完成了。兩邊代碼務必一致,Gemini 才知道有這個選項、程式也才找得到對應窗口。

觸發器多久跑一次比較好?

客服講求時效,一般設每 5 到 10 分鐘就很夠。間隔太短容易撞到 API 速率限制、也浪費配額;太長則客戶等太久。建議先用 10 分鐘觀察,若覺得回應不夠即時再縮短,找到準確與時效的平衡。

信件內容很長會有問題嗎?

可能會,過長內容會消耗較多 token、也可能超過限制。教學裡用 slice 只取前段內文送去分類,通常足以判斷類別。若某些信非得看全文才分得出來,可以適度加長截斷字數,但別整封塞進去,兼顧成本與速度。

需要會寫程式才能維護嗎?

不用太深。日常維護多半只是改對應表的 Email、微調提示詞文字,這些都是複製貼上等級的修改。真正的邏輯已經寫好且註解清楚,看得懂中文說明就能上手。若要做較大改動,再找懂 GAS 的同事或參考官方文件即可。

這套會不會誤刪或亂動我的信?

不會。程式只做三件事:讀取、寄出副本、貼標籤,完全沒有刪除或封存的動作。你原本的信件都安全保留。若不放心,第一次可以先在測試帳號或測試標籤上試跑,確認行為都符合預期後,再套用到正式客服信箱。

CTA下一步|找人帶團隊做

把「判斷該給誰」交給 Gemini、把「派件」交給 GAS,你的客服團隊就能少掉一大段重複勞動,把時間留給真正需要人情味的回覆。如果想把這套流程完整落地到團隊,甚至擴充成更完整的客服自動化,可以找專人帶著做。

想讓團隊用 AI+自動化把重複工作交給流程?賴家榮提供 Workspace/GAS/Gemini 企業內訓與大學課程。

預約授課・免費諮詢

本文為賴家榮 AI 教學中心原創教學內容;想讓團隊學會用 AI,歡迎看AI 課程或預約授課 →

代表圖片來源:圖片來源:Pexels

Your turn

把 AI,變成團隊真的用得上的能力。

不論你在哪個產業,賴家榮都能帶團隊把 AI 學到真的用得上。

預約授課・免費諮詢