Automation
Google Workspace+GAS 自動化零基礎入門
用 Google Apps Script 把 Gmail、雲端硬碟、表單、試算表串成自動流程。賴家榮零基礎入門:看懂工具、拆解流程、做出第一個自動化。附完整簡報下載。
閱讀知識
客訴和負評最怕的是「太晚看到」。這篇會帶你把評論資料放進 Google 試算表,讓 Gemini 逐筆做情緒分析,把正負面與情緒強度寫回表格並上色,一旦出現強烈負評,就用 GmailApp 立刻通知負責人,讓問題在還小的時候就被處理。
完成後,你只要把評論貼進試算表(或用表單自動收集),流程就會幫你判讀每一筆的情緒溫度、標好顏色、並在有人真的很不滿時主動敲你一下。負評不再淹沒在成堆資料裡。
評論和客訴每天累積,靠人一筆筆讀完幾乎不可能,往往等到客戶公開抱怨、或流失了才發現。而真正該優先處理的,其實只是其中情緒最強烈的少數幾筆——問題在於你很難在成堆資料裡即時把它們挑出來。
Gemini 擅長理解語氣與情緒,能把「有點小失望」和「氣到要退訂」區分開來;SpreadsheetApp 讓結果直接落在你熟悉的試算表裡,GmailApp 則負責在關鍵時刻主動通知。三者合起來,等於幫你的客戶聲音裝了一個溫度計加警報器,該滅火時你會第一時間知道。
動作在試算表建立欄位,例如 A 欄評論內容、B 欄情緒、C 欄強度、D 欄狀態,第一列放標題。
常見地雷程式是用欄位位置抓資料,欄位順序調整後記得同步改程式裡的欄號。
動作在試算表點「擴充功能 > Apps Script」,這樣程式會自動綁定這份試算表,操作更方便。
常見地雷第一次執行會要求授權存取試算表與 Gmail,請用擁有這份表的帳號授權。
動作在「專案設定 > 指令碼屬性」新增 GEMINI_API_KEY,值填你的金鑰。
常見地雷不要把金鑰寫在程式碼字串裡,避免匯出或截圖時外洩。
動作把下方第一段共用函式貼進編輯器,負責呼叫 Gemini 取回文字結果。
常見地雷確認網址中的模型是 gemini-2.5-flash,打錯會回 404。
動作要求 Gemini 只回傳固定格式,例如「情緒|強度」,方便程式切割解析。
常見地雷務必限制輸出格式,否則 Gemini 回一段說明文字會讓解析失敗。
動作用 getDataRange 讀出所有列,跳過已處理的,逐筆送 Gemini,把結果寫回 B、C 欄。
常見地雷只處理狀態為空的列,避免每次執行都重跑整張表、浪費額度。
動作依情緒為該列背景上色,若是高強度負評,用 GmailApp.sendEmail 通知負責人。
常見地雷設定一個明確門檻(例如負面且強度 >=4 才通知),避免小抱怨也狂發信。
動作先手動執行 analyzeReviews 看結果,再到「觸發條件」設定每小時或每天定時跑一次。
常見地雷評論量大時分批處理,一次別塞太多列,以免撞到 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();
}
接著是主流程 analyzeReviews:讀取試算表評論、用 Gemini 分析情緒與強度、寫回並上色,遇到強烈負評就寄信通知。請把 ALERT_TO 換成你團隊的負責人信箱。
function analyzeReviews() {
const ALERT_TO = 'manager@your-company.com'; // 收警報的負責人
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
const data = sheet.getDataRange().getValues();
// 從第 2 列開始(第 1 列是標題)
for (let i = 1; i < data.length; i++) {
const comment = data[i][0]; // A 欄:評論內容
const status = data[i][3]; // D 欄:狀態
if (!comment || status === '已分析') continue; // 空白或處理過就跳過
const prompt = '你是情緒分析器。請判斷下列評論的情緒與強烈程度,只回傳「情緒|強度」格式,不要多餘文字。\n'
+ '情緒為:正面 / 中性 / 負面 其中之一;強度為 1 到 5 的整數(5 最強烈)。\n'
+ '例如:負面|4。\n評論:' + comment;
const result = askGemini(prompt);
const parts = result.split('|');
const mood = (parts[0] || '中性').trim();
const score = parseInt(parts[1], 10) || 1;
const row = i + 1; // 試算表列號從 1 起算
sheet.getRange(row, 2).setValue(mood); // B 欄:情緒
sheet.getRange(row, 3).setValue(score); // C 欄:強度
sheet.getRange(row, 4).setValue('已分析'); // D 欄:狀態
// 依情緒為整列上色
let color = '#ffffff';
if (mood === '負面') color = '#f4cccc';
else if (mood === '正面') color = '#d9ead3';
sheet.getRange(row, 1, 1, 4).setBackground(color);
// 高強度負評 -> 立即通知負責人
if (mood === '負面' && score >= 4) {
GmailApp.sendEmail(ALERT_TO,
'[客訴警報] 出現強烈負面評論(強度 ' + score + ')',
'請盡快查看以下評論並跟進:\n\n' + comment);
}
}
}
整個判讀、上色、通知都由流程自動完成。你打開試算表就能一眼看出哪幾筆是紅色負評,而真正緊急的那幾筆,早已寄到負責人信箱,不必等你翻到才發現。
反諷、雙關的確是情緒分析最難的地方,任何 AI 都可能被騙。Gemini 對一般直白的評論判斷相當準,但遇到諷刺語氣仍可能失手。建議把它當成「初步分流」,紅色負評務必人工複看;你也可以在提示詞裡提醒它注意反諷,準確度會再好一些。
因為程式需要固定、可預測的輸出才好解析。用一個分隔符號把兩個資訊隔開,程式一 split 就能拆出情緒與分數,非常穩定。如果讓 Gemini 自由發揮回一整段話,程式就很難可靠地抓到你要的欄位,容易出錯。
不會,只要用「狀態」欄把處理過的列標成已分析,下次執行就會跳過它們,只處理新增的評論。這樣既省 Gemini 的額度、也跑得快。若你想重新分析某些列,把那幾列的狀態清空即可,程式下次就會再處理。
取決於你設的門檻。教學裡預設「負面且強度 4 以上」才通知,過濾掉多數輕微抱怨,只留下真正需要立刻處理的。如果還是太多,可以把門檻提高到只通知強度 5,或改成每天彙整一封摘要信,而不是每筆都即時發。
可以。常見做法是用 Google 表單收集回饋,回覆會自動落進試算表,再讓這支程式定時分析。若評論來自外部平台,也能先匯出成 CSV 貼進試算表。重點是資料先進到試算表,後面的分析與通知流程就完全一樣,不用改。
對多數中小團隊的評論量來說,Google AI Studio 的免費額度通常足夠先跑起來。因為每筆評論只是一次短短的呼叫,成本很低。若你有大量歷史資料要一次分析,建議分批跑、避開速率限制;長期量大再考慮付費方案即可。
不會,setBackground 只改儲存格的底色,不動內容。你的評論文字、日期等資料都完整保留。若你不喜歡顏色,隨時可以手動清除格式,或把程式裡上色那幾行拿掉,分析與通知功能仍能正常運作,互不影響。
可以。Gemini 支援多國語言,英文、日文等評論同樣能判斷情緒。你甚至可以在提示詞要求它「不論原文語言,一律用中文回傳情緒」,這樣試算表的結果就統一好讀。若你的客群是多語系,這個功能會特別方便。
教學的程式已做了防呆:解析不到情緒就預設為中性、解析不到強度就給 1,不會整支中斷。這樣即使偶爾一筆格式異常,其他列仍能正常處理。你只要事後檢查那幾筆奇怪的結果、必要時重跑該列即可,不用擔心一顆老鼠屎壞了整鍋。
看你的即時性需求。若希望負評第一時間被發現,可設每小時跑一次;若評論一天才進來幾筆,設每天一次也很夠。觸發間隔越密、反應越快,但也越吃額度。建議先用每小時觀察,再依實際評論量與急迫度調整。
有了情緒溫度計加警報器,你的團隊就不會再讓重要負評埋沒在資料堆裡。如果想把這套情緒分析流程完整導入、甚至串接你現有的回饋管道,可以找專人帶著團隊一起做起來。
想讓團隊用 AI+自動化把重複工作交給流程?賴家榮提供 Workspace/GAS/Gemini 企業內訓與大學課程。
預約授課・免費諮詢本文為賴家榮 AI 教學中心原創教學內容;想讓團隊學會用 AI,歡迎看AI 課程或預約授課 →
代表圖片來源:圖片來源:Pexels