創意探索

利用 Google App Script 和 Sheets 製作網站個人化表單

3 分鐘閱讀

你知道嗎?只要你懂得怎麼用,Google 的這兩個工具組合,其實能實現一個很靈活的個人化表單系統。

  • 工具
  • Web開發

為什麼許多人在製作網站表單時,總是卡在「資料要存哪裡?」這個問題上?有人花大錢用 CMS,有人串接複雜的第三方服務。但你知道嗎?只要你懂得怎麼用,Google 的這兩個工具組合,其實能實現一個很靈活的個人化表單系統。

開始之前一樣先打個預防針,我並不是專業的工程技術人員,只是分享我在愉悅探索與學習的過程當中的一些小心得和方法,不喜勿噴。


首先重要的安全提示:App Script 連結最好不要直接放前端

這是最重要的一個提醒。

如果你直接詢問AI,要AI幫你搭建一個使用Google App Script (GAS)加上Google sheet的客製化表格,AI大概會直接建議你將App Script 連結放在前端當中,其實對於小型的專案來說,直接放著也不是真的不可以,只是這樣會有很大的安全隱患。原因有兩個。

首先,這樣做會完全暴露你的後端邏輯。任何人只要看一眼網頁原始碼,就能拿到你的 App Script 連結、了解你的資料流程、甚至反覆呼叫它發送垃圾資料。其次,缺乏速率限制和身分驗證。沒有任何防護機制,你的表單如果被鎖定,就會成為被攻擊/濫用的管道,而且這樣的系統對於攻擊的免疫力幾乎是0。

正確的做法是什麼呢?前端應該透過一個中間層(比如你自己的 API 伺服器或是 Vercel 的 Edge Function、CloudFlare Workers)來呼叫 App Script,而不是直接對話。這樣你就能在中間層做驗證、限流、日誌記錄,甚至自訂回應格式。


完整流程:從表單設計到資料上鎖

第一步:設計你的 Google Sheet 結構

首先在 Google Sheet 中規劃好欄位。不只是「姓名、信箱、訊息」這種基礎,更要想清楚:你需要時間戳記嗎?需要區分不同類型的提交嗎?需要記錄提交者的 IP 或使用者代理嗎?這些決定都會影響後續 App Script 怎麼寫。同時,預留一個「狀態」欄位會很有用——用來標記哪些提交已被處理、哪些需要跟進。

第二步:編寫 Google App Script 的核心邏輯

App Script 需要做三件事。
一是接收資料——監聽來自中間層的 POST 請求。
二是驗證資料——確保欄位不為空、格式合理(比如信箱格式檢查)。
三是寫入 Sheet——通過 Sheets API 將資料新增到指定工作表的新列。

你可能還想加上記錄錯誤的功能,這樣如果出問題了,你能在另一個工作表裡看到詳細的失敗日誌。

第三步:建立中間層 API

這是安全防護的關鍵。無論你選擇用自架伺服器、Vercel、Netlify Functions 還是 CloudFlare Workers,重點是:前端只能呼叫這個中間層。中間層需要做的是(1)速率限制——防止同一 IP 在短時間內瘋狂提交、(2)簽章驗證——確認請求來自你可信的前端、(3)資料清理——移除可能有害的內容、(4)錯誤處理——如果 App Script 掛了,要回傳有意義的錯誤訊息。

第四步:前端表單介面

設計一個簡潔的表單 UI,指向中間層而非 App Script。提交時顯示載入狀態,成功後清空表單並顯示自訂的成功訊息,失敗則顯示友善的錯誤提示。這裡你有完整的自由度,能用任何前端框架(React、Vue、Plain HTML)都行。

第五步:測試與監控

完成後,用各種邊界情況測試(比如說重複提交、超大文本、特殊字符)。同時在 App Script 和 Sheet 裡設定適當的日誌記錄,這樣當有問題時,你能快速定位。Google Sheet 本身也可以設定簡單的通知,比如說新提交時寄信提醒你。


結語

當你完成這套系統後,你會發現它有幾個優點。
首先,資料完全在你手上——沒有第三方服務商能存取或賣你的使用者資訊。

其次,成本超低——Google Sheets 免費,App Script 在非商業應用下基本無成本,中間層伺服器成本視選擇而定。

再者,高度可客製化——你想要什麼欄位、什麼驗證邏輯、什麼樣的視覺反饋,全由你決定。

但也別忘了:這個方案需要一定的技術理解和維護成本。如果你只是想快速架一個表單,用現成服務可能更聰明。

但如果你想建立一個真正屬於自己的系統,這條路還滿值得的。