2025年12月13日 星期六

【Google教學】如何讓表單送出時,自動產生「民國日期+流水號」的編號?(使用 AI Studio 寫程式)

今天這篇教學要來解決一個很多人的痛點:當我們製作 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)做流水號不就好了嗎?」

這裡有一個很嚴重的隱藏風險

  1. 刪除資料會導致編號亂掉: 如果你使用公式(例如 ROW() 或 COUNTIF),一旦你刪除中間某一行資料,下面的編號全部會重新計算。原本的 0005 號可能會變成 0004 號,這對於訂單或報名序號來說是災難。

  2. 新版表格的限制: Google Sheets 最近更新了「表格」功能,對於自動擴展的陣列公式支援度有些改變,可能會導致公式無法自動帶入新的一列。

結論: 想要產生「固定不變」的流水號(刪除資料也不會跑掉),唯一推薦使用 Google Apps Script (GAS)


實作步驟教學

第一步:準備 Google 表單與試算表

  1. 建立一個 Google 表單(例如包含姓名、備註)。

  2. 點擊「回應」並連結至 Google 試算表

  3. 打開連動的 Google 試算表,在原本的欄位中間(或最後面),插入一個新欄位,命名為「自動編號」。

    • 注意:請記住這個欄位是第幾欄(A=1, B=2, C=3...)。在本範例中,自動編號是在 C 欄(第 3 欄)。

第二步:利用 AI Studio 產生程式碼

我們不需要自己寫程式,直接去問 Google AI Studio。

  1. 前往 Google AI Studio

  2. 輸入以下提示詞(Prompt):

    我想要表單送出時,會自動在「自動編號」這一欄(C欄),依據時間戳記自動產生 1141213-0001 格式的編號。
    前面是民國日期,後面四碼是當日產生的流水號。請給我 Google Apps Script 的程式碼。

  3. AI 會告訴你邏輯,並給你一段完整的程式碼。它通常會建議使用 LOCK 機制來避免多人同時送出時編號重複的問題。

第三步:貼上 Google Apps Script

  1. 回到你的 Google 試算表。

  2. 點選上方選單的 「擴充功能」 -> 「Apps Script」

  3. 會跳出一個程式碼編輯器,將裡面原本的 myFunction 清空。

  4. 將剛剛 AI 給你的程式碼全部複製貼上

  5. 關鍵修改: 檢查程式碼中關於「欄位」的設定。如果 AI 寫的是第 1 欄,但你的自動編號在 C 欄,請將該數字改成 3

  6. 點擊上方的磁片圖示「儲存」,專案名稱可以取跟試算表一樣。

第四步:設定「觸發條件」 (最重要的一步!)

程式碼貼上去並不會自己動,我們必須告訴 Google:「當有人填寫表單時,要執行這段程式」。

  1. 在 Apps Script 左側選單,點擊一個像鬧鐘的圖示 「觸發條件」 (Triggers)

  2. 點擊右下角的 「新增觸發條件」

  3. 設定如下:

    • 執行功能: 選擇剛剛貼上的函數名稱(通常是 generateAutoID 之類的)。

    • 部署作業: 上端 (Head)。

    • 活動來源: 試算表 (From spreadsheet)。

    • 活動類型: 提交表單時 (On form submit) <--- 這一定要選對!

  4. 按「儲存」。

第五步:核對權限

儲存觸發條件時,Google 會跳出視窗要求授權:

  1. 選擇你的 Google 帳號。

  2. 可能會出現「Google 尚未驗證這個應用程式」的紅字警告(因為這是你自己寫的腳本)。

  3. 別擔心,點選左下角的 「進階 (Advanced)」

  4. 點選最下方的 「前往... (不安全)」

  5. 點選 「允許 (Allow)」


測試成果

  1. 回到你的 Google 表單預覽頁面。

  2. 隨便填寫一筆資料並送出。

  3. 回到 Google 試算表觀察。

  4. 你會發現,雖然表單原本沒有填寫編號,但在資料進來的瞬間,Script 會自動在 C 欄補上 1141213-0001

  5. 再送出第二筆,就會變成 1141213-0002

  6. 壓力測試: 試著刪除第一筆資料(0001號),你會發現第二筆資料依然維持 0002,不會因為前面被刪除而自動遞補變成 0001。這就是我们要的穩定流水號!


補充:如果堅持要用公式 (Formula) 怎麼做?

雖然不推薦,但如果你的資料永遠不會刪除,你可以直接在 Google 試算表的欄位中使用公式。

可以使用類似以下的邏輯(針對民國年與當日流水號):

Excel
==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 表單無法自動產生客製化流水號的問題。這個方法穩定、可靠,且具備真正的資料庫編號特性(不會隨意變動)。 



沒有留言:

張貼留言

注意:只有此網誌的成員可以留言。

【Google教學】如何讓表單送出時,自動產生「民國日期+流水號」的編號?(使用 AI Studio 寫程式)

今天這篇教學要來解決一個很多人的痛點: 當我們製作 Google 表單時,希望在表單送出後,Google 試算表(Sheets)能自動幫我們產生一組「民國日期 + 流水號」的編號。 例如:今天是民國 114 年 12 月 13 日,第一筆資料要是  1141213-0001 ,第...