Automation
Google Workspace+GAS 自動化零基礎入門
用 Google Apps Script 把 Gmail、雲端硬碟、表單、試算表串成自動流程。賴家榮零基礎入門:看懂工具、拆解流程、做出第一個自動化。附完整簡報下載。
閱讀知識
如果你的表單會收到來自不同國家的填答,人工回信是件苦差事:要先看懂對方講什麼語言,再用那個語言回一封得體的信。這篇教學要讓 Gemini 幫你做這兩件事——判斷語言、寫出對應語言的回覆,最後由 GmailApp 自動寄出。
看完之後你會有一個「表單填了就自動用對方語言回信」的機器人,客服、報名、諮詢表單都能用,再也不必為了語言而卡住。
多語客服最累的不是打字,而是「切換腦袋」。收到日文要查、收到英文要想措辭,來回切換很耗神,回覆速度也慢。讓 Gemini 判斷語言並直接產出對應語言的回信,你只要負責審核,速度與一致性都大幅提升。
而且這套流程住在 Google 表單+Gmail 裡,都是你既有的工具,不必額外導入平台。表單送出即觸發、Gmail 自動寄出,中間不需要人守著。對小團隊來說,這等於用零成本補上一個「24 小時多語客服」。
動作在表單編輯畫面點「回應 → 連結到試算表」,建立一份新的回應試算表。之後程式會綁在這份試算表上。
常見地雷一定要有一題問 Email,否則程式不知道要回信給誰。
動作在剛剛的回應試算表點「擴充功能 → Apps Script」,開啟編輯器。
常見地雷要從『試算表』開,不是從表單開,觸發器才抓得到表單送出事件。
動作左側「專案設定 → 指令碼屬性」新增 GEMINI_API_KEY,值貼上你的金鑰並儲存。
常見地雷金鑰不要寫進程式碼,分享試算表時會外流。
動作清空編輯器,貼上下方第一段共用函式,負責呼叫 Gemini。
常見地雷網址與參數照抄,別漏字。
動作接著貼上第二段 onFormSubmit 主流程,它會取出填答內容、判斷語言、產生回信並用 GmailApp 寄出。
常見地雷程式裡用欄位標題抓 Email 與內容,記得改成你表單的實際題目文字。
動作點左側時鐘圖示「觸發器 → 新增觸發器」,函式選 onFormSubmit、事件來源選『來自試算表』、事件類型選『表單提交時』,儲存。
常見地雷第一次建立觸發器會要求授權,照步驟允許即可。
動作授權視窗會提到存取 Gmail 寄信權限,點『進階 → 前往專案 → 允許』。
常見地雷看到未驗證提示屬正常,因為是你自己的程式。
動作自己去填一次表單、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 一併回傳語言別,再依語言換不同主旨。
這條流水線的關鍵在觸發器——它讓程式不用人守著也會自動跑。掌握『事件觸發 → 呼叫 Gemini → 用服務輸出結果』這個模式後,你能把它套到留言、報名、預約等各種表單。
因為『表單提交時』這個觸發器要綁在連結的試算表專案上,才能穩定收到 e.namedValues 這種帶題目文字的資料。從表單開的容器式指令碼也能做,但欄位取值方式不同、較容易踩坑。本文統一從回應試算表開,流程最單純,之後要擴充成寫回試算表也最方便。
十之八九是欄位標題對不上。e.namedValues 是用『題目的文字』當 key,例如題目叫『電子郵件』,程式就要寫 nv['電子郵件']。請打開試算表看第一列的欄位名稱,一字不差地填進程式。有多餘空格或全形半形不同都會抓不到,複製貼上最保險。
對常見語言(中、英、日、韓等)準確度很高,尤其留言有一定長度時。若留言太短、只有一兩個字,可能不好判斷。保險做法是在提示詞要求它『若無法判斷語言則使用英文回覆』,給一個安全預設值。也可以讓它先回語言代碼再回內文,你就能記錄下來檢視判斷結果。
用 GmailApp 從你自己的帳號寄出,信譽通常不錯,但大量寄送仍可能觸發限制。建議:主旨具體、內文不要塞一堆連結、加上真實署名。個人帳號每天寄信量有上限(約數百封),量大請改用 Google Workspace 帳號。先小量測試,觀察是否進垃圾桶再擴大。
可以。讓 Gemini 先回傳語言代碼,在程式裡用 if 判斷:命中的語言就自動回信,其他就只記錄、不寄出,改由人工處理。這種『AI 先分流、人接手例外』的做法在客服很常見,能兼顧效率與品質。等你熟悉後再逐步放寬自動回覆的範圍。
當然可以,而且上線初期很建議這樣。把 GmailApp.sendEmail 換成 GmailApp.createDraft,回信會存成草稿而不寄出,你檢查沒問題再手動按送出。等你對 Gemini 產出的品質有信心,再改回自動寄出。這是導入 AI 客服很穩健的過渡做法。
先到 Apps Script 左側『執行項目』看有沒有執行紀錄與紅色錯誤。常見原因有三:欄位標題對不上(抓不到 Email)、觸發器事件類型選錯(要選『表單提交時』)、或授權沒完成。逐一檢查,並確認你填答時真的填了 Email 那一題。
Gemini API 有免費額度,一般表單流量通常都在免費範圍內;GmailApp 寄信本身不另收費,但有每日寄信量上限。真正要留意的是量大時的 Gemini 用量與 Gmail 寄信限制。建議先用免費額度跑一陣子,觀察每日回信數量,再評估是否需要升級帳戶或改批次處理。
可以,關鍵全在提示詞。想正式就寫『用專業、正式的商務語氣』;想親切就寫『用溫暖、口語的語氣,可適度使用表情符號』。你甚至可以把公司的品牌語氣守則貼進提示詞,讓每封回信都符合調性。多試幾種寫法、寄給自己看效果,很快就能調到你要的感覺。
可以,觸發器是『每送出一筆就跑一次』,彼此獨立,並不會互相干擾。要注意的是若短時間湧入大量填答,會集中呼叫 Gemini 與 Gmail,可能碰到配額上限。流量大的活動建議改成定時批次處理,或加上簡單的排隊機制。日常小流量則完全不用擔心。
你已經做出一條會自己判斷語言、自動回信的流水線。把觸發器、提示詞、GmailApp 這幾塊組合起來,就能延伸出報名確認、預約提醒等各種自動化。若想帶團隊系統化落地,歡迎進一步了解。
想讓團隊用 AI+自動化把重複工作交給流程?賴家榮提供 Workspace/GAS/Gemini 企業內訓與大學課程。
預約授課・免費諮詢本文為賴家榮 AI 教學中心原創教學內容;想讓團隊學會用 AI,歡迎看AI 課程或預約授課 →
代表圖片來源:圖片來源:Pexels