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

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

GAS×Gemini:表單自動分類+客製回信

GAS×Gemini:表單自動分類+客製回信 — 賴家榮 AI 教學

Overview這一課你會做出什麼

這篇帶你用 Google Apps Script(GAS)串接 Google Gemini AI,做出一個真正能用的自動化:只要有人填你的 Google 表單,系統就自動用 Gemini 判斷這則需求屬於哪一類、生成一封客製化的確認信、寄給對方,並把狀態寫回試算表——全程不用人手。

Key Takeaways

  • 成果:表單送出 → Gemini 自動分類 → 生成回信 → 寄出 → 記錄狀態,全自動
  • 用到的工具:Google Forms、Sheets、Apps Script、Gemini API、Gmail
  • 核心觀念:GAS 是「膠水」,Gemini 是「會判斷與寫作的大腦」
  • 安全重點:API 金鑰要放在「指令碼屬性」,絕不寫死在程式碼裡
  • 跟著做約 20 分鐘就能跑起來,零基礎也 OK

下面一步一步來,每一步都會說清楚在哪裡點、貼什麼程式碼、容易卡在哪。

Why先看情境:這解決什麼問題

很多公司每天收到大量表單詢問(報價、技術支援、合作…),小編要一封一封看、手動分類、再打字回信,既慢又容易漏。這正是最適合自動化的工作:規則清楚、頻率高、容易漏。

傳統 GAS 只能做「固定範本」的回信;但加入 Gemini 之後,AI 能「讀懂」每則需求、自動分類、還能寫出像人寫的客製回覆。這就是 Workspace+GAS+Gemini 的威力:把判斷與寫作也交給流程。

Prepare動手前準備

Checklist

  • 一個 Google 帳號(能用 Forms、Sheets、Gmail)
  • 一把 Gemini API 金鑰:到 Google AI Studio(ai.google.dev)登入 → 建立 API key
  • 一份 Google 表單,欄位建議命名為「姓名」「Email」「需求」,並在「回覆」分頁連結到一份 Google 試算表
  • 約 20 分鐘、跟著步驟做的耐心(不需要程式基礎)

Steps一步一步實作

1建立表單並連結試算表

動作用 Google Forms 做表單(姓名、Email、需求三題),到「回覆」分頁點試算表圖示,建立連結的 Google Sheets

常見地雷欄位名稱之後程式會用到,先取好中文名(姓名、Email、需求),日後別隨意改名

2取得 Gemini API 金鑰

動作到 Google AI Studio 登入,建立一把 API key,先複製起來

常見地雷金鑰等於密碼,絕不能貼在程式碼、公開分享或截圖外流

3打開 Apps Script 編輯器

動作在剛剛那份試算表,點「擴充功能 → Apps Script」,會開啟雲端程式碼編輯器

常見地雷從試算表開的是「綁定型」腳本,取得目前檔案最方便

4把金鑰存進指令碼屬性

動作左側「專案設定 → 指令碼屬性」→ 新增一組:屬性 GEMINI_API_KEY,值貼上你的金鑰

常見地雷一定要用 PropertiesService 讀取,不要把金鑰寫死在程式裡

5貼入 askGemini 函式

動作把下方「呼叫 Gemini」的程式碼貼到編輯器,它負責把你的提示送給 Gemini、拿回文字

常見地雷模型名稱(gemini-2.5-flash)之後可能更新,以 Gemini 官方文件為準

6貼入 onFormSubmit 函式

動作貼入主流程:讀 e.namedValues、用 Gemini 分類與生成回信、GmailApp 寄出、把狀態寫回試算表

常見地雷欄位名稱(姓名/Email/需求)要和你表單完全一致,否則抓不到值

7建立「表單送出時」可安裝觸發器

動作左側「觸發器」→ 新增觸發器 → 函式選 onFormSubmit、事件來源選「試算表」、事件類型選「表單提交時」

常見地雷一定要用「可安裝觸發器」,簡易觸發器不能用 UrlFetch 呼叫外部 API 與寄信

8測試並看執行紀錄

動作自己填一次表單,檢查有沒有收到分類正確的確認信、試算表狀態欄有沒有寫入

常見地雷第一次執行會跳授權畫面,按「允許」;若失敗,點「執行紀錄」看錯在哪一行

其中最關鍵的兩段程式碼如下,直接複製貼上即可(記得金鑰是用屬性讀取,不是寫死):

// 呼叫 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
  });
  const data = JSON.parse(res.getContentText());
  return data.candidates[0].content.parts[0].text.trim();
}
// 表單送出時自動執行:分類 + 生成回信 + 寄出 + 記錄狀態
function onFormSubmit(e) {
  const v = e.namedValues;                 // 依題目名稱取答案
  const name  = v['姓名'][0];
  const email = v['Email'][0];
  const msg   = v['需求'][0];

  // 1) 用 Gemini 判斷分類
  const category = askGemini(
    '請把以下需求歸類為「報價」「技術支援」「合作邀約」其中一種,只回類別四個字內:\n' + msg
  );

  // 2) 用 Gemini 生成客製回信
  const reply = askGemini(
    '你是客服。用親切專業、100 字內的語氣,回覆客戶「' + name + '」關於以下需求的確認信:\n' + msg
  );

  // 3) 寄出確認信
  GmailApp.sendEmail(email, '我們已收到您的「' + category + '」需求', reply);

  // 4) 把狀態寫回試算表最後一欄
  const sheet = e.range.getSheet();
  sheet.getRange(e.range.getRow(), sheet.getLastColumn() + 1)
       .setValue(category + '|已於 ' + new Date().toLocaleString() + ' 回覆');
}

Flow一張圖看懂整個流程

表單自動分類+客製回信 流程
1表單送出 觸發
2讀取 e.namedValues
3Gemini 判斷分類
4Gemini 生成回信
5Gmail 寄出
6試算表寫入狀態

若你看不到上圖,純文字流程等價為:表單送出(觸發)→ 讀取整列資料 → Gemini 分類 → Gemini 生成回信 → Gmail 寄出 → 試算表記錄狀態與時間。

Tips常見錯誤與優化

FAQ常見問題 Q&A

常見問題 FAQ

完全不會寫程式,也能做出這個嗎?

可以。這篇的程式碼可以直接複製貼上,你只要照步驟把它們放對位置、設定好金鑰與觸發器即可。重點是理解「表單送出 → 讀資料 → Gemini 判斷 → 寄信 → 記錄」這個流程,程式細節邊做邊懂。跟著做大約 20 分鐘就能跑起來。

Gemini API 金鑰要去哪裡拿?要付費嗎?

到 Google AI Studio(ai.google.dev)用 Google 帳號登入,即可建立 API key。Gemini 提供免費額度,個人與小量測試通常免費就夠用;用量大時才需付費。實際額度與計費以 Google 官方頁面為準,建議先用免費額度把流程跑通。

為什麼金鑰不能直接寫在程式碼裡?

因為金鑰等於密碼,寫死在程式碼裡一旦外流(分享專案、截圖、複製給別人),別人就能用你的額度、甚至產生費用。正確做法是存到「指令碼屬性(Script Properties)」,程式用 PropertiesService 讀取,既安全又方便更換。

簡易觸發器和可安裝觸發器差在哪?這裡該用哪個?

簡易觸發器(如 onEdit)設定簡單但權限受限,不能呼叫外部 API 或寄信;可安裝觸發器可使用需授權的服務、事件類型也更多。這個案例要呼叫 Gemini(外部 API)並用 Gmail 寄信,所以必須用「可安裝觸發器」,並選「表單提交時」。

Gemini 分類不準怎麼辦?

八成是提示詞(prompt)不夠明確。把可選類別列清楚、要求「只回類別、限四個字內」,並可給一兩個範例,輸出就會穩定很多。若需求本身模糊,也可以讓 Gemini 回「其他」再由人工判斷,避免硬分錯類。

會不會有隱私或資料外洩風險?

你送給 Gemini 的是表單內容,建議只送必要欄位、避免夾帶身分證號等高度機敏資料;對外或多人使用前,先確認腳本用誰的身分執行、會碰到哪些資料。企業導入時應把「哪些欄位可送 AI、哪些要遮蔽」列入規劃,這是資料治理的一環。

一天很多筆表單,會不會很慢或出錯?

單筆處理通常幾秒內完成。量大時建議:在程式加上 try/catch,失敗時自動寄信通知你;並注意 Gemini 與 Apps Script 的用量配額。若尖峰量很大,可改成「定時批次」處理,一次讀多列再統一呼叫,兼顧速度與配額。

除了分類和回信,還能加什麼?

很多。例如:依分類自動貼標籤或轉寄給對應同事、把重要需求自動建立 Calendar 提醒、用 Gemini 生成待辦摘要、或把統計寫進報表。這個「表單 → AI → 動作」的骨架,換個提示詞與動作,就能長出各種自動化。

這和直接用 ChatGPT 貼一貼有什麼不同?

最大差別是「自動、可重複、留紀錄」。手動複製貼到 ChatGPT 每次都要人做、容易漏、也沒紀錄;用 GAS+Gemini 串成流程後,表單一送出就全自動跑完並寫回狀態,適合每天穩定發生的工作,把人力留給真正需要判斷的例外。

學會這個之後,下一步學什麼?

建議往「郵件自動摘要與分類」「試算表自訂 =GEMINI() 函式」「文件自動生成」延伸——它們都用同一套骨架(觸發 → 讀取 → Gemini → 動作 → 紀錄)。把這個心智模型練熟,你就能把公司裡各種重複工作一個個自動化。想要系統化、少走冤枉路,也可以參加賴家榮的企業內訓。

CTA下一步

恭喜!你剛做出一個「會判斷、會寫信」的自動化。把這個骨架換個提示詞與動作,就能延伸出無數應用。想讓團隊系統化學會 Workspace+GAS+Gemini,把重複工作一次自動化,歡迎往下走:

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

預約授課・免費諮詢

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

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

Your turn

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

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

預約授課・免費諮詢