Vibe Coding - Google Sheet + App Script 打造專屬免費報到系統

最近因為之前嘗試用 Vibe Coding 打造名片系統,我就在想:

下一個可以拿來實作、真正解決身邊問題的系統會是什麼?


固定運作、現場流程可以更好的活動

我有一個固定參加的台大精煉讀書會,會員資格為期一年,是兩個月一次的定期付費活動,期滿可以再續報下一年,目前已經邁入第12屆。

每年大約招收兩百個會員。兩個月一次的活動,實際參與的人數,大約落在一百六十人上下。

因為是付費活動,就必須有現場的報到及領取識別證的流程,來做會員身分的審核。


代位機制 - 小複雜的報到需求

精煉讀書會有一個彈性機制:

活動是付費的,但允許會員安排代位出席

也就是當會員本人因事無法出席時,可以將席位指定讓其他人來參加。


這樣的制度設計其實很彈性,但也直接影響到現場報到流程:

• 現場需要清楚知道「誰是正式會員」:一年的活動中會發放兩本書,需要是正式會員才能領書

• 哪些人是「代位出席」:代位人可以參與活動,但不能代替正式會員領書,身分必須要有清楚的標示

所以,報到的功能不僅只是簽到而已,而是牽涉到身分辨識與後續權限。


用會員編號報到 - 可是記不得會員編號

過去我們是用會員編號搭配 Google 表單完成現場報到,簡單且免費。但現場的實務上,容易遇上以下問題:

沒人記得會員編號,但需要用會員編號來搜尋。


• 會員編號的規則:三碼的會員編號(1-200號),活動兩個月才一次,大部分會員其實不太記得自己的編號。

• 之前的 Google 表單是用下拉選單搜尋會員編號來報到:下拉選單找名字很花時間

• 現場識別證是依照會員編號排列


之前因此需要在現場常常得另外貼一張編號對照表,增加不少混亂。



AI讓小開發不再困難

剛好我之前有開發過名片辨識系統,發現 google 的 app script 有很多強大的功能。

再加上最近我剛成為了 Gemini Pro 的用戶,就開始嘗試,有沒有可能開發一套系統:

○ 可以永久免費使用

○ 又能符合現場「快速報到」的需求

○ 不需要會員記得任何編號

我就這樣一邊跟 Gemini 討論、一邊把需求拆解,慢慢把流程拼出來。

以下就是這套系統實際的功能及設定方式:


簽到系統:包含現場簽到及人數統計

簽到系統的 Google sheet 及相關程式碼,可由以下網址直接複製:https://docs.google.com/spreadsheets/d/1Xcq5QLKRcKJb9nHqpLi9bSgiWJ_8FjztiMQ63e0BGJQ/copy

(裡面的會員名字都是AI生成的假名)


下載前想先看看效果的話

• 現場簽到頁面:https://script.google.com/macros/s/AKfycbxX2dlnKXZYvFRIkpHTHxcuHYl4Wie_ZeYGCOdv5F-KTaLnf90e-rDuc-DjrN0ifKuv/exec

• 人數統計頁面:https://script.google.com/macros/s/AKfycbxX2dlnKXZYvFRIkpHTHxcuHYl4Wie_ZeYGCOdv5F-KTaLnf90e-rDuc-DjrN0ifKuv/exec?page=admin


在 google sheet 的「使用說明」中,也有介面的介紹。


在活動結束之後,只需要另外備份資料,並將此份表單清空,就可以再使用一次,永久免費。

(有關重複使用的方式後面會再詳述)


簽到頁面:


1. 用手機打開簽到頁面,需要 4 秒左右的名單載入時間(依網速而定),此時會顯示:






2. 出現人數 (160人)時,代表名單已經載入,可以開始搜尋






3. 使用編號或姓名任何一個字,就可以帶出名單 (此處都是假名示意),點選簽到以後,會出現確認頁面















4. 手機出示頁面就可以跟工作人員領取識別證















5. 代位報到也是一樣的邏輯
















6. 代位確認頁面會以不同顏色標示,方便識別身分










部署方式


如果未來希望自行使用,複製下檔案後,需要進行部署的程序,才能實際得到自己專屬的使用網址

示範檔請參考:https://docs.google.com/spreadsheets/d/1Xcq5QLKRcKJb9nHqpLi9bSgiWJ_8FjztiMQ63e0BGJQ/copy


1. 點選:擴充功能-> Apps Script









裡面會內含三部分的程式碼

  • 程式碼.gs:主要運行的程式碼
  •  Index.html:現場報到使用的網址
  • Admin.html:工作人員看的後台系統,可即時統計已報到人數


2. 點選畫面右上方的「部署」->新增部署作業










3. 部署方式,點選設定圖示->網頁應用程式->存取改為「所有人」->「部署」














4. 依照畫面授予google帳戶存取權


5. 因為是自行開發的程式,沒有經過官方認證,會跳出警示;在此選擇「Advanced」->「Go to 簽到(unsafe)」,接下來依序完成認證即可













6. 部署作業完成之後,請複製網頁應用程式裡面的網址,會是以 /exec 結尾的一串網址

這一串就是現場可以用來做報到的網址


例如示範檔案的現場報到連結就是: https://script.google.com/macros/s/一大串/exec


7. 報到統計後台:把上述網址的結尾手動由「/exec」改為 「/exec?page=admin」

https://script.google.com/macros/s/一大串/exec?page=admin

 

8. 再次使用:

由於不同的 google sheet 部署後會產生不同的網址,會造成每次需要重新給網址的麻煩

更好的作法是,在這次活動結束後,按另存副本,把此次的紀錄另外存下來後;清空這個檔案裏面的「報到名單」及「出席意願調查」,就可以重複使用了


開發心得


在過去,如果沒有程式開發背景,要自己寫程式、開發系統,幾乎是不可能的事情。

但現在有了 AI 的協助,整個開發過程變得非常迅速,也不再那麼有距離感。


上一次我主要是使用 ChatGPT 這個平台來協助開發;而這一次,因為剛加入 Gemini Pro,便改用了這個平台。實際使用後,我覺得兩個平台在「協助修改程式碼」這件事情上,有一個蠻明顯的差異。


ChatGPT 在修訂時,通常只會提供在那一小段需要修改的程式碼,並且會詢問是否需要提供整段;

而 Gemini Pro 則比較傾向於在每一次修改時,直接重新貼給你一整份完整的程式碼。


對我來說,一鍵複製整段程式碼當然很方便,但同時也會擔心:

會不會有其他我沒有注意到的地方,在這個過程中被一起改動,最後反而導致整個系統出現問題。


因此我會覺得,這兩個平台在「提供資料的方式」上,其實各有不同,也需要使用者花一點時間去熟悉、去適應。


因為已經有過一次實作經驗,這次在開發流程上的節奏明顯快了很多。

我也很意外地發現,Google Apps Script 本身就可以做出一個堪用的 HTML 介面,而且只要透過 google sheet 分享出去,就能簡單使用,不需要額外學習其他的介面。

這讓我重新意識到,其實有很多需求,未必需要透過開發App、python來完成。


對我來說,AI 真正改變是把程式開發這件事,變成一件可以嘗試也不那麼可怕的事情

並不是所有功能都需要從零開始自己寫,有些情境其實已經有很好用的小工具可以直接搭配使用;

而當真的遇到比較特殊的需求時,就可以透過 AI 來補上這一塊。


這樣的開發過程對我來說非常有趣,

也讓我開始期待,接下來再用同樣的方式,做出其他真正解決問題的小系統。


延伸閱讀:

留言

這個網誌中的熱門文章

介紹演講者魏寶生董事長:一次關於讀書會準備、AI 與成長的紀錄

被打斷的藝術:在辦公室中,如何有禮貌地「打擾」別人?

把雜事交給 AI 日曆管理:Toki 在生活與工作上的應用