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

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

表單多語,用 Gemini 自動回覆

表單多語,用 Gemini 自動回覆 — 賴家榮 AI 教學

Overview這篇教學會幫你做出什麼

如果你的表單會收到來自不同國家的填答,人工回信是件苦差事:要先看懂對方講什麼語言,再用那個語言回一封得體的信。這篇教學要讓 Gemini 幫你做這兩件事——判斷語言、寫出對應語言的回覆,最後由 GmailApp 自動寄出。

Key Takeaways

  • 表單一送出,就自動觸發 Apps Script,全程不用你動手。
  • 用 Gemini 判斷填答者使用的語言(中文、英文、日文…)。
  • 依對方語言產生一封語氣得體的客製回信內容。
  • 用 GmailApp 把回信寄到填答者留下的 Email。
  • API 金鑰放在指令碼屬性,安全不外流。
  • 整條流程可重複套用到任何 Google 表單。

看完之後你會有一個「表單填了就自動用對方語言回信」的機器人,客服、報名、諮詢表單都能用,再也不必為了語言而卡住。

Why為什麼用 GAS+Gemini 而不是手動回信

多語客服最累的不是打字,而是「切換腦袋」。收到日文要查、收到英文要想措辭,來回切換很耗神,回覆速度也慢。讓 Gemini 判斷語言並直接產出對應語言的回信,你只要負責審核,速度與一致性都大幅提升。

而且這套流程住在 Google 表單+Gmail 裡,都是你既有的工具,不必額外導入平台。表單送出即觸發、Gmail 自動寄出,中間不需要人守著。對小團隊來說,這等於用零成本補上一個「24 小時多語客服」。

Prepare動手前要準備的東西

Checklist

  • 一份 Google 表單,且至少有一題收集填答者 Email(或開啟自動收集 Email)。
  • 一組 Gemini API 金鑰(到 ai.google.dev 免費申請)。
  • 確認表單已連結到一份試算表(回應 → 連結到試算表)。
  • 會從試算表開啟「擴充功能 → Apps Script」。
  • 大約 15 分鐘,以及一封想用來測試的假填答。

Steps一步一步做出來

1把表單連結到試算表

動作在表單編輯畫面點「回應 → 連結到試算表」,建立一份新的回應試算表。之後程式會綁在這份試算表上。

常見地雷一定要有一題問 Email,否則程式不知道要回信給誰。

2打開 Apps Script

動作在剛剛的回應試算表點「擴充功能 → Apps Script」,開啟編輯器。

常見地雷要從『試算表』開,不是從表單開,觸發器才抓得到表單送出事件。

3設定 API 金鑰

動作左側「專案設定 → 指令碼屬性」新增 GEMINI_API_KEY,值貼上你的金鑰並儲存。

常見地雷金鑰不要寫進程式碼,分享試算表時會外流。

4貼上第一段:askGemini

動作清空編輯器,貼上下方第一段共用函式,負責呼叫 Gemini。

常見地雷網址與參數照抄,別漏字。

5貼上第二段:主流程

動作接著貼上第二段 onFormSubmit 主流程,它會取出填答內容、判斷語言、產生回信並用 GmailApp 寄出。

常見地雷程式裡用欄位標題抓 Email 與內容,記得改成你表單的實際題目文字。

6建立『表單送出』觸發器

動作點左側時鐘圖示「觸發器 → 新增觸發器」,函式選 onFormSubmit、事件來源選『來自試算表』、事件類型選『表單提交時』,儲存。

常見地雷第一次建立觸發器會要求授權,照步驟允許即可。

7授權存取 Gmail

動作授權視窗會提到存取 Gmail 寄信權限,點『進階 → 前往專案 → 允許』。

常見地雷看到未驗證提示屬正常,因為是你自己的程式。

8送一筆測試填答

動作自己去填一次表單、Email 填你自己的信箱,送出後過幾秒查收,應該會收到一封由 Gemini 產生、對應你填答語言的回信。

常見地雷沒收到先看 Apps Script『執行紀錄』有沒有錯誤,通常是欄位標題對不上。

下面第一段是共用的 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();
}

第二段是主流程:表單一送出就觸發,取出 Email 與留言,讓 Gemini 判斷語言並產出回信,最後用 GmailApp 寄出。請把欄位標題改成你表單的實際題目。

function onFormSubmit(e) {
  // e.namedValues 以『題目文字』為 key,值為陣列
  const nv = e.namedValues;
  const email = (nv['電子郵件'] || nv['Email'] || [''])[0];
  const message = (nv['需求或留言'] || nv['留言'] || [''])[0];
  if (!email) return; // 沒有信箱就不處理

  // 讓 Gemini 判斷語言並產生對應語言的回信
  const prompt =
    '你是一位親切的客服。以下是客戶用他的語言填寫的留言:\n"' + message + '"\n\n' +
    '請先判斷這段文字使用的語言,然後『用相同的語言』寫一封簡短、有禮貌的回覆,' +
    '告訴對方我們已收到需求、會盡快與他聯絡。只回傳信件內文,不要加主旨或說明。';
  const replyBody = askGemini(prompt);

  GmailApp.sendEmail(email, '我們已收到您的來信 / We received your message', replyBody);
}

存檔後建立好觸發器,去填一次表單測試。你會收到一封 Gemini 依你填答語言寫成的回信。若想更講究,可以讓 Gemini 一併回傳語言別,再依語言換不同主旨。

Flow整個流程長這樣

從表單送出到自動回信的流程
1填答者送出 Google 表單
2觸發器啟動 onFormSubmit,取出 Email 與留言
3組成提示詞,呼叫 askGemini() 判斷語言並產生回信
4Gemini 回傳對應語言的回信內文
5GmailApp.sendEmail 把回信寄給填答者
6填答者收到用自己語言寫的客製回覆

這條流水線的關鍵在觸發器——它讓程式不用人守著也會自動跑。掌握『事件觸發 → 呼叫 Gemini → 用服務輸出結果』這個模式後,你能把它套到留言、報名、預約等各種表單。

Tips實用小技巧

FAQ常見問題

常見問題 FAQ

為什麼要從試算表開 Apps Script,不從表單開?

因為『表單提交時』這個觸發器要綁在連結的試算表專案上,才能穩定收到 e.namedValues 這種帶題目文字的資料。從表單開的容器式指令碼也能做,但欄位取值方式不同、較容易踩坑。本文統一從回應試算表開,流程最單純,之後要擴充成寫回試算表也最方便。

程式抓不到 Email 或留言,一直是空的怎麼辦?

十之八九是欄位標題對不上。e.namedValues 是用『題目的文字』當 key,例如題目叫『電子郵件』,程式就要寫 nv['電子郵件']。請打開試算表看第一列的欄位名稱,一字不差地填進程式。有多餘空格或全形半形不同都會抓不到,複製貼上最保險。

Gemini 判斷語言會不會判錯?

對常見語言(中、英、日、韓等)準確度很高,尤其留言有一定長度時。若留言太短、只有一兩個字,可能不好判斷。保險做法是在提示詞要求它『若無法判斷語言則使用英文回覆』,給一個安全預設值。也可以讓它先回語言代碼再回內文,你就能記錄下來檢視判斷結果。

自動回信會不會被當成垃圾信?

用 GmailApp 從你自己的帳號寄出,信譽通常不錯,但大量寄送仍可能觸發限制。建議:主旨具體、內文不要塞一堆連結、加上真實署名。個人帳號每天寄信量有上限(約數百封),量大請改用 Google Workspace 帳號。先小量測試,觀察是否進垃圾桶再擴大。

可以只在特定語言時才自動回,其他人工處理嗎?

可以。讓 Gemini 先回傳語言代碼,在程式裡用 if 判斷:命中的語言就自動回信,其他就只記錄、不寄出,改由人工處理。這種『AI 先分流、人接手例外』的做法在客服很常見,能兼顧效率與品質。等你熟悉後再逐步放寬自動回覆的範圍。

回信內容我想先審核再寄,不要直接寄出可以嗎?

當然可以,而且上線初期很建議這樣。把 GmailApp.sendEmail 換成 GmailApp.createDraft,回信會存成草稿而不寄出,你檢查沒問題再手動按送出。等你對 Gemini 產出的品質有信心,再改回自動寄出。這是導入 AI 客服很穩健的過渡做法。

觸發器建立後沒有反應,測試填答沒收到信?

先到 Apps Script 左側『執行項目』看有沒有執行紀錄與紅色錯誤。常見原因有三:欄位標題對不上(抓不到 Email)、觸發器事件類型選錯(要選『表單提交時』)、或授權沒完成。逐一檢查,並確認你填答時真的填了 Email 那一題。

會用到多少費用?

Gemini API 有免費額度,一般表單流量通常都在免費範圍內;GmailApp 寄信本身不另收費,但有每日寄信量上限。真正要留意的是量大時的 Gemini 用量與 Gmail 寄信限制。建議先用免費額度跑一陣子,觀察每日回信數量,再評估是否需要升級帳戶或改批次處理。

可以把回覆語氣改成更正式或更活潑嗎?

可以,關鍵全在提示詞。想正式就寫『用專業、正式的商務語氣』;想親切就寫『用溫暖、口語的語氣,可適度使用表情符號』。你甚至可以把公司的品牌語氣守則貼進提示詞,讓每封回信都符合調性。多試幾種寫法、寄給自己看效果,很快就能調到你要的感覺。

這套能同時處理很多筆填答嗎?

可以,觸發器是『每送出一筆就跑一次』,彼此獨立,並不會互相干擾。要注意的是若短時間湧入大量填答,會集中呼叫 Gemini 與 Gmail,可能碰到配額上限。流量大的活動建議改成定時批次處理,或加上簡單的排隊機制。日常小流量則完全不用擔心。

CTA下一步|把重複工作交給流程

你已經做出一條會自己判斷語言、自動回信的流水線。把觸發器、提示詞、GmailApp 這幾塊組合起來,就能延伸出報名確認、預約提醒等各種自動化。若想帶團隊系統化落地,歡迎進一步了解。

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

預約授課・免費諮詢

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

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

Your turn

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

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

預約授課・免費諮詢