Google表單的Gemini AI生成功能好用嗎?我測完最後還是回去寫了一行Apps Script

你有沒有過這種經驗?想偷懶用AI生成一張表單,結果AI生出來的東西看起來很像樣,實際拿來用卻處處不對勁,最後還是得自己動手改一遍。

我最近幫公司做下午茶訂購單,就是這個情境。Google表單內建的Gemini AI生成功能聽起來很方便——打幾句話描述需求,它就幫你把欄位排好。問題是排好的欄位經不起後續統計

1. Problem Statement:

現象:用Google表單AI生成下午茶訂購單,欄位看起來都齊了,糖度、冰塊、價格都有,表單本身能正常填寫。

原因:AI生成欄位時不會替你考慮「這份資料之後要怎麼被程式處理」。它優先滿足的是「看起來像一張完整表單」,不是「這份資料能不能被自動化統計」。

具體出問題的地方:

  • 糖度跟冰塊被塞進同一個欄位(比如「半糖微冰」當成一個選項),後續想用 Excel統計各糖度的訂購量,根本統計不出來——因為每個值都是獨一無二的字串組合,沒有兩筆會剛好一樣
  • 價格欄位是自由文字輸入,員工填法五花八門:「65元」、「大約70」、「65塊」——這些字串丟進加總公式,直接讓計算結果報錯

影響:每張表單事後要花30到60分鐘手動對帳清資料,而且如果哪天負責的人換了,下次又是從零開始重新生成、重新踩同樣的坑。

2. Solution Architecture:

問題的本質不是「AI生成得不夠聰明」,是AI根本不知道你的下游需求是什麼。它沒看過你的 Excel 公式,不知道你要用COUNTIF,自然不會把欄位設計成方便統計的結構。

我的建構邏輯:用Google Apps Script (GAS)直接寫程式碼生成表單 + 把容易出錯的欄位拆開並加驗證規則 = 一次寫好,永久可重複用,資料品質有保障

這不是「拋棄AI」,是換一個工具——表單生成這種結構固定、邏輯明確的任務,寫死規則比讓AI每次重新猜你的需求更穩定。普適痛點在這裡:任何需要靠表單收集結構化資料、又要後續統計的場景,都會撞上同一個問題。

3. Implementation:核心腳本

關鍵設計是把容易混在一起的欄位拆開,並對自由輸入欄位加驗證

function createAfternoonTeaForm_0410() {
  var form = FormApp.create('4/10(五) 公司下午茶訂購單');
  form.setDescription('結標時間:4/9 16:00\n菜單參考連結:[可不可/麻古/下午茶]');

  // 1. 基礎資訊
  form.addMultipleChoiceItem()
      .setTitle('部門')
      .setChoiceValues(['業務部', '行政部', '財務部', '管理部'])
      .setRequired(true);

  form.addTextItem().setTitle('中文姓名').setRequired(true);

  // 2. 飲料設定(拆分糖冰以利自動化統計)
  form.addMultipleChoiceItem()
      .setTitle('飲料店家')
      .setChoiceValues(['可不可熟成紅茶', '麻古'])
      .setRequired(true);

  form.addTextItem().setTitle('飲料品項').setRequired(true);

  // 數字驗證:防止髒資料混進後面的試算表
  var priceValidation = FormApp.createTextValidation()
    .setHelpText('請輸入純數字金額(例如:65)')
    .requireNumber()
    .build();

  form.addTextItem().setTitle('飲料價格').setValidation(priceValidation).setRequired(true);
  form.addListItem().setTitle('糖度').setChoiceValues(['正常糖', '半糖', '微糖', '無糖']).setRequired(true);
  form.addListItem().setTitle('冰塊').setChoiceValues(['正常冰', '少冰', '微冰', '去冰']).setRequired(true);

  Logger.log('發布網址: ' + form.getPublishedUrl());
}
[重點] 兩個設計決定了這份表單能不能被自動化統計:拆分欄位(糖度跟冰塊各自獨立成下拉選單,不是混在一個欄位的文字描述裡),以及輸入驗證(價格欄位強制純數字,擋掉「65元」「大約70」這類自由格式)。AI生成不會替你做這兩件事,因為它根本不知道你後面要接COUNTIF

4. 常見問題

問題 原因 解法
重複執行腳本會建出多張表單 GAS每次執行FormApp.create都是新建,不是更新 把表單ID存起來,改用FormApp.openById更新既有表單,不要每次重新建
驗證規則沒生效 setValidation要在addTextItem回傳的物件上呼叫,順序錯了會漏設 確認鏈式呼叫的順序:addTextItem()先回傳item物件,再接.setValidation()
之後要換店家/日期要改腳本 店家清單寫死在程式碼裡 把可變動的部分(店家、日期、結標時間)抽成變數放在function最上面,改這幾行就能重複用

5. Conclusion:什麼時候該用GAS,什麼時候用AI生成就好

適合GAS 適合AI生成
表單會重複使用,且結構固定(每次只改店家/日期) 一次性、隨手用的簡單表單
後續資料要進試算表跑公式統計 只是收集意見,不需要精確統計
欄位邏輯複雜(需要拆分、驗證) 欄位簡單,AI生成的結果剛好夠用

這件事讓我重新確認一個判斷準則:AI適合幫你快速生成初稿,但只要下游有明確的程式邏輯要接,寫死規則永遠比讓AI猜你的需求更穩

下次你發現自己在AI生成的結果上反覆手動修正同一個地方,那大概就是該寫一行腳本把邏輯定下來的時候了。


本文為 BosonFlow 原創,轉載請標示出處。

需要流程自動化或Apps Script開發服務?歡迎來信: - Email:[email protected]