今天這篇教學要來解決一個很多人的痛點:當我們製作 Google 表單時,希望在表單送出後,Google 試算表(Sheets)能自動幫我們產生一組「民國日期 + 流水號」的編號。
例如:今天是民國 114 年 12 月 13 日,第一筆資料要是 1141213-0001,第二筆是 1141213-0002,以此類推。
以前要寫這種程式很頭痛,但現在有了 Google AI Studio,我們可以請 AI 幫我們寫 Google Apps Script (GAS),完全不用自己動腦!這篇文章也會順便分析為什麼推薦用 GAS 而不是 Excel 公式。
為什麼不用公式 (Formula) 就好?
很多人第一直覺是:「用 Excel 或 Google Sheets 的公式(如 COUNTIF 或 ArrayFormula)做流水號不就好了嗎?」
這裡有一個很嚴重的隱藏風險:
刪除資料會導致編號亂掉: 如果你使用公式(例如 ROW() 或 COUNTIF),一旦你刪除中間某一行資料,下面的編號全部會重新計算。原本的 0005 號可能會變成 0004 號,這對於訂單或報名序號來說是災難。
新版表格的限制: Google Sheets 最近更新了「表格」功能,對於自動擴展的陣列公式支援度有些改變,可能會導致公式無法自動帶入新的一列。
結論: 想要產生「固定不變」的流水號(刪除資料也不會跑掉),唯一推薦使用 Google Apps Script (GAS)。
實作步驟教學
第一步:準備 Google 表單與試算表
建立一個 Google 表單(例如包含姓名、備註)。
點擊「回應」並連結至 Google 試算表。
打開連動的 Google 試算表,在原本的欄位中間(或最後面),插入一個新欄位,命名為「自動編號」。
注意:請記住這個欄位是第幾欄(A=1, B=2, C=3...)。在本範例中,自動編號是在 C 欄(第 3 欄)。
第二步:利用 AI Studio 產生程式碼
我們不需要自己寫程式,直接去問 Google AI Studio。
前往 Google AI Studio。
輸入以下提示詞(Prompt):
我想要表單送出時,會自動在「自動編號」這一欄(C欄),依據時間戳記自動產生 1141213-0001 格式的編號。
前面是民國日期,後面四碼是當日產生的流水號。請給我 Google Apps Script 的程式碼。
AI 會告訴你邏輯,並給你一段完整的程式碼。它通常會建議使用 LOCK 機制來避免多人同時送出時編號重複的問題。
第三步:貼上 Google Apps Script
回到你的 Google 試算表。
點選上方選單的 「擴充功能」 -> 「Apps Script」。
會跳出一個程式碼編輯器,將裡面原本的 myFunction 清空。
將剛剛 AI 給你的程式碼全部複製貼上。
關鍵修改: 檢查程式碼中關於「欄位」的設定。如果 AI 寫的是第 1 欄,但你的自動編號在 C 欄,請將該數字改成 3。
點擊上方的磁片圖示「儲存」,專案名稱可以取跟試算表一樣。
第四步:設定「觸發條件」 (最重要的一步!)
程式碼貼上去並不會自己動,我們必須告訴 Google:「當有人填寫表單時,要執行這段程式」。
在 Apps Script 左側選單,點擊一個像鬧鐘的圖示 「觸發條件」 (Triggers)。
點擊右下角的 「新增觸發條件」。
設定如下:
執行功能: 選擇剛剛貼上的函數名稱(通常是 generateAutoID 之類的)。
部署作業: 上端 (Head)。
活動來源: 試算表 (From spreadsheet)。
活動類型: 提交表單時 (On form submit) <--- 這一定要選對!
按「儲存」。
第五步:核對權限
儲存觸發條件時,Google 會跳出視窗要求授權:
選擇你的 Google 帳號。
可能會出現「Google 尚未驗證這個應用程式」的紅字警告(因為這是你自己寫的腳本)。
別擔心,點選左下角的 「進階 (Advanced)」。
點選最下方的 「前往... (不安全)」。
點選 「允許 (Allow)」。
測試成果
回到你的 Google 表單預覽頁面。
隨便填寫一筆資料並送出。
回到 Google 試算表觀察。
你會發現,雖然表單原本沒有填寫編號,但在資料進來的瞬間,Script 會自動在 C 欄補上 1141213-0001。
再送出第二筆,就會變成 1141213-0002。
壓力測試: 試著刪除第一筆資料(0001號),你會發現第二筆資料依然維持 0002,不會因為前面被刪除而自動遞補變成 0001。這就是我们要的穩定流水號!
補充:如果堅持要用公式 (Formula) 怎麼做?
雖然不推薦,但如果你的資料永遠不會刪除,你可以直接在 Google 試算表的欄位中使用公式。
可以使用類似以下的邏輯(針對民國年與當日流水號):
==IF(A2="",, TEXT(YEAR(A2)-1911,"000") & TEXT(A2,"mmdd") & "-" & TEXT(COUNTIFS($A$2:A2, ">=" & INT(A2), $A$2:A2, "<" & INT(A2) + 1), "0000"))
(註:這是概念示意,實際公式需依照欄位 A 的時間戳記進行調整)
公式法的缺點再次提醒:
一旦你把中間的某一列刪除,所有的 COUNTIFS 計算都會改變,原本的編號就會全部亂跳。請務必小心使用。
總結
使用 Google AI Studio 搭配 Apps Script,我們可以輕鬆解決 Google 表單無法自動產生客製化流水號的問題。這個方法穩定、可靠,且具備真正的資料庫編號特性(不會隨意變動)。