Automation
Google Workspace+GAS 自動化零基礎入門
用 Google Apps Script 把 Gmail、雲端硬碟、表單、試算表串成自動流程。賴家榮零基礎入門:看懂工具、拆解流程、做出第一個自動化。附完整簡報下載。
閱讀知識
庫存跌破安全量、客訴出現特定關鍵字、數字異常飆高,這些狀況若沒人盯著就會錯過。這篇教你用時間驅動觸發器,讓 Apps Script 定時監控試算表,把可疑資料交給 Gemini 判斷嚴重程度,只在真正該處理時才用 GmailApp 發出通知。
本文以「庫存監控表」為例:欄位含品項、目前數量、安全庫存、備註、通知狀態。觸發器定時執行時,程式先用簡單規則抓出數量低於安全庫存或備註含關鍵字的列,再交給 Gemini 判斷是否嚴重到要通知,需要時才寄出警示信。
純用規則做監控有個老問題:門檻設太鬆會漏、設太緊會被誤報淹沒。單看「數量低於安全庫存」可能每天觸發一堆其實還好的品項,久了大家就不再看通知,真正的緊急狀況反而被埋沒。監控要有用,關鍵在於能分辨輕重。
這正是 Gemini 補上的能力。它能綜合數量差距、備註內容、品項特性做出「這件事有多嚴重、該不該現在通知」的判斷,像有一位值班同事幫你先過濾一遍。把「抓出可疑」交給程式的規則、把「判斷輕重」交給 Gemini,通知才會既不漏也不吵。
動作在監控試算表點「擴充功能 → Apps Script」開啟指令碼專案。
常見地雷從獨立指令碼進入會抓不到這張表,請從試算表開。
動作在「專案設定 → 指令碼屬性」新增 GEMINI_API_KEY,填入金鑰。
常見地雷金鑰別寫死在程式碼裡,分享時會外洩。
動作貼上下方第一段共用函式作為呼叫 Gemini 的入口。
常見地雷模型名稱要與你有權限的版本相符,否則回傳 404。
動作在主流程開頭設定 TO 收件人與要監控的 KEYWORDS 關鍵字。
常見地雷關鍵字比對區分不到大小寫時,可先轉小寫再比。
動作貼上第二段 monitorSheet(),它先用規則篩選、再交 Gemini 判斷、需要時通知。
常見地雷務必用通知狀態欄標記,避免同一問題天天重複提醒。
動作選 monitorSheet 按執行,授權存取試算表、寄信與連外網路。
常見地雷第一次會出現未驗證警告,點「進階 → 前往」即可,那是你自己的指令碼。
動作在「觸發器」新增,函式選 monitorSheet、來源選時間驅動、設每小時或每天巡檢。
常見地雷巡檢頻率依業務急迫度定,別過度頻繁而耗盡配額。
動作放一筆明顯異常的測試資料執行,確認收到警示信且狀態被標記。
常見地雷沒通知先看執行紀錄,多半是規則篩選或金鑰設定有誤。
第一段是共用的 Gemini 呼叫函式,請原封不動貼進指令碼。它從屬性服務讀金鑰,用 UrlFetchApp 送出請求並取回文字。
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();
}
第二段是主流程:先用規則抓出數量低於安全庫存或備註含關鍵字的列,再請 Gemini 回答是否需要通知與一句說明,只有判定要通知時才用 GmailApp 寄信並標記。
const TO = 'ops@example.com';
const KEYWORDS = ['損壞', '客訴', '延遲'];
function monitorSheet() {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('庫存監控表');
const data = sheet.getDataRange().getValues();
for (let i = 1; i < data.length; i++) {
const [item, qty, safe, note, notified] = data[i];
if (!item || notified === '已通知') continue;
const lowStock = Number(qty) < Number(safe);
const hasKeyword = KEYWORDS.some(k => String(note).indexOf(k) !== -1);
if (!lowStock && !hasKeyword) continue;
const prompt = '你是營運監控助理。請判斷以下狀況是否嚴重到需要立即通知負責人。只回覆「通知:原因」或「略過:原因」:\n品項:' + item + '\n目前數量:' + qty + '\n安全庫存:' + safe + '\n備註:' + note;
const verdict = askGemini(prompt);
if (verdict.indexOf('通知') === 0) {
GmailApp.sendEmail(TO, '【監控警示】' + item, verdict + '\n\n目前數量:' + qty + '/安全庫存:' + safe + '\n備註:' + note);
sheet.getRange(i + 1, 5).setValue('已通知');
}
}
}
這裡有兩道關卡:規則負責「快速抓出可疑」,Gemini 負責「判斷是否真的要吵人」。兩層過濾加上通知狀態欄,讓警示既不漏掉重要狀況,也不會被無關緊要的訊息淹沒。
技術上可以全交給 Gemini,但每一列都呼叫一次 API 既慢又浪費額度,大部分資料其實根本正常。先用簡單規則(低於安全量、含關鍵字)把明顯無關的列排除,只把可疑的少數交給 Gemini 深入判斷,速度快、成本低,也讓 Gemini 專注在真正需要判斷的灰色地帶。
關鍵在提示詞。範例明確要求它「只回覆通知:原因 或 略過:原因」,程式再用開頭是不是「通知」來決定要不要寄信。若你發現它偶爾不照格式,就把要求寫得更死,例如強調不可加任何其他文字。必要時也可在程式裡做容錯,找不到關鍵字時預設略過並記錄下來。
不會,只要通知狀態欄有正確標記。程式在寄出通知後立刻把該列標成已通知,之後巡檢看到這個標記就跳過。要注意的是,如果問題解決後又復發,你得把狀態重置成空白,它才會重新被監控並在必要時再次通知。
常見原因是大小寫或全半形不一致,或備註裡有多餘空白。可以在比對前先把備註和關鍵字都轉成小寫、去掉空白再比。若要更聰明的比對,例如同義詞或語意相近,那就別靠字面關鍵字,直接把備註交給 Gemini 判斷是否屬於某類問題,效果會更好。
看業務有多急。庫存或系統狀態這類希望及早發現的,可設每小時;一般營運資料每天一兩次就夠。頻率越高越即時,但也越耗 GAS 與 Gemini 的配額。建議先從每天或每幾小時開始,觀察實際需要再調整,不要一開始就設每幾分鐘。
有可能,模型判斷不是百分之百。降低風險的做法:一是把判斷標準寫進提示詞,明確告訴它什麼情況一定要通知;二是對高風險品項保留純規則的硬性通知,不完全依賴 Gemini;三是保留一份完整的巡檢紀錄,即使當下略過,事後也能追查。讓規則守住底線、Gemini 處理灰色地帶,最穩妥。
可以。GmailApp 只是範例中最簡單的管道,你也可以用 UrlFetchApp 呼叫 Slack 或 Line 的 Webhook,把同一段警示內容送過去。核心的監控與判斷邏輯完全不用改,只是把最後「發通知」那一步換成呼叫對應的 API。這也是把 askGemini 和通知分開寫的好處,替換很容易。
把每種監控寫成獨立函式,各自有自己的規則與提示詞,再分別掛觸發器即可。它們可以共用同一個 askGemini。若條件很多,也可以在一個函式裡用陣列定義多組規則,迴圈套用。重點是保持每個判斷清楚獨立,日後要加要改都不會互相干擾。
不會。程式是在後端獨立執行,讀取試算表的資料,不會卡住正在編輯的人。唯一要注意的是若巡檢頻率極高又資料量大,可能碰到執行時間上限。一般情境下每小時或每天巡檢一次,對試算表和使用者完全沒有感覺,可以放心長期運作。
GAS 與 Gmail 一般用量免費,Gemini 也有免費額度。因為有規則先粗篩,實際呼叫 Gemini 的次數通常不多,遠低於免費上限。只有在監控極大量資料且頻繁巡檢時才需評估付費方案。對多數團隊來說,這套智慧監控幾乎零成本,卻能把漏看重要狀況的風險大幅降低。
好的監控不是把所有異常都丟給你,而是幫你分辨哪些真的該處理。用規則抓出可疑、用 Gemini 判斷輕重,你就得到一位不會累、不會漏、也不會亂吵你的值班助理。
想讓團隊用 AI+自動化把重複工作交給流程?賴家榮提供 Workspace/GAS/Gemini 企業內訓與大學課程。
預約授課・免費諮詢本文為賴家榮 AI 教學中心原創教學內容;想讓團隊學會用 AI,歡迎看AI 課程或預約授課 →
代表圖片來源:圖片來源:Pexels