2025年5月29日 星期四

使用 formRanger 輕鬆打造 Google 表單預約系統 (含自動更新)

今天想跟大家分享如何利用 Google 表單搭配一個強大的外掛 formRanger,來製作一個可以自動更新的預約系統。

過去很多網友在修改我的 Google 表單程式時,常常需要額外的客製化或協助除錯,這促使我思考是否能用更簡單的方式來實現預約功能,減少手動維護的麻煩。

於是我嘗試使用 Google 表單加上 formRanger 外掛來建構預約系統。我設定的範例是:每天都有預約時段,但星期五星期日不開放預約。當有網友預約了某個時段後,該時段就會立即從表單的選項中消失,讓後面的預約者看不到已被預約的時段。這個「消失」的魔法,主要就是透過後端試算表搭配 FILTER 函數和 formRanger 實現的。

範例預約表單展示 (根據影片內容)

您可以先看看實際完成的表單會是什麼樣子。(由於無法嵌入動態表單,這裡描述功能)

表單包含:

  • 您的姓名或暱稱 (必填)

  • 聯絡電話 (必填)

  • 您要預約的時段 (多選方塊)

  • 請簡要解決的問題 (請說明)

在「您要預約的時段」這個多選方塊中,會列出所有可預約的日期和時段。當您預約並提交後,重新整理表單,您預約的時段就會消失,不會再出現在選項列表中。同時,表單設定了星期五和星期日不會出現可預約的時段。

這套系統的優點:

  1. **自動更新:**formRanger 可以設定在表單提交後自動更新問題選項,避免重複預約。

  2. **數據集中:**所有預約資料都集中在一個 Google 試算表中,方便管理和查看。

  3. **彈性設定:**可以透過試算表中的公式,靈活設定可預約的日期、時段,甚至排除特定日期(如假日)。

  4. **無需寫程式:**核心功能依賴 formRanger 外掛和試算表公式,大部分使用者都能自行操作。

如何建構這個系統?

這個系統的核心是 Google 試算表,它作為 formRanger 的資料來源,提供表單的選項列表。

步驟一:準備 Google 試算表

建立一個新的 Google 試算表(或使用現有的)。這個試算表會有兩個工作表:

  • 工作表 1 (表單回應): Google 表單自動連結產生的回應工作表。這個工作表會記錄所有使用者提交的預約資訊。

  • 工作表 2 (預約時段列表): 我們要手動建立的工作表,用來產生和過濾可預約的時段列表,供 formRanger 使用。

在「工作表 2」中,建立以下欄位:

  • 內容 (A欄): 產生包含日期和時段的字串。這個欄位會根據你的「開始日期」和時間間隔自動生成一系列預約時段。

    • 範例公式 (A2儲存格): =text((row(A1)-1)+'工作表 2'!$H$1),"mm/dd(星期a) ") & text((row(A1)-1)+'工作表 2'!$H$1),"HH:mm") & "-" & text(time(hour('工作表 2'!$H$1),minute('工作表 2'!$H$1)+30,0),'HH:mm')

      • 這個公式比較複雜,它的作用是:

        • '工作表 2'!$H$1 引用 H1 儲存格的「開始日期」(例如:2022/8/1 上午 9:00:00)。

        • row(A1)-1 產生一個從 0 開始遞增的數字系列 (A2是row(A2)-1=1, A3是row(A3)-1=2...),用來計算日期偏移量。

        • '工作表 2'!$H$1 + row(A1)-1 讓日期每天遞增。

        • text(...,"mm/dd(星期a) ") 將日期格式化為月/日(星期幾)的字串。

        • text(time(hour('工作表 2'!$H$1),minute('工作表 2'!$H$1)+30,0),'HH:mm') 計算出結束時間(從 H1 的時間開始,加上 30 分鐘,並格式化為時:分的字串)。

        • 用 & "-" & 將開始時間和結束時間連接起來。

    • 將 A2 儲存格的公式向下拖曳填充,產生接下來的預約時段列表(例如產生一個月的時段)。

  • 是否已預約 (B欄): 檢查該時段是否已被預約。

    • 範例公式 (B2儲存格): =COUNTIF('表單回應 1'!C:C,"*"&A2&"*")

      • '表單回應 1'!C:C 指的是「表單回應 1」工作表中的 C 欄(預約的時段)。

      • "*"&A2&"*" 是一個模糊匹配的條件,查找在回應的預約時段字串中,是否包含「工作表 2」A2 儲存格的完整時段字串(例如 "08/01(星期一) 21:00-21:30")。* 是萬用字元,表示匹配前後的任意文字。

      • COUNTIF 函數會計算符合條件的儲存格數量。如果結果大於 0,表示該時段已被預約。

    • 將 B2 儲存格的公式向下拖曳填充。

  • 星期 (C欄): 提取星期幾,用於過濾特定星期。

    • 範例公式 (C2儲存格): =MID(A2,9,1)

      • 這個公式從 A2 儲存格的字串中,從第 9 個字元開始,擷取 1 個字元(例如 "星期一" 中的 "一")。

    • 將 C2 儲存格的公式向下拖曳填充。

  • 顯示內容 (E欄): 這是 formRanger 實際用來 populate 表單選項的欄位。它會根據「是否已預約」和「星期」來過濾。

    • 範例公式 (E2儲存格): =iferror(filter(A2:A,B2:B=0,REGEXMATCH(C2:C,"^[一二三四六]$")),"")

      • filter(A2:A, B2:B=0, ...):過濾 A 欄的內容,只保留 B 欄值等於 0 的列(即未被預約的時段)。

      • REGEXMATCH(C2:C,"^[一二三四六]$"):進一步過濾 C 欄(星期)的內容,只保留符合正則表達式條件的列。^[一二三四六]$ 表示字串必須從頭 (^) 到尾 ($) 恰好是「一」或「二」或「三」或「四」或「六」。這排除了星期五和星期日。

      • iferror(...,""):如果 filter 函數沒有找到任何符合條件的列(例如所有時段都被預約或當月假日過多),就會產生錯誤,iferror 會將錯誤替換為空字串 ("") 或其他提示文字(如影片中的「已全部被預約」)。

    • 將 E2 儲存格的公式向下拖曳填充。

  • 開始日期 (H1儲存格): 手動設定每月預約的開始日期和時間。例如:2022/8/1 上午 9:00:00 或 2022/9/1 下午 9:00:00 (21:00)。當你更改 H1 的日期時,A 欄的預約時段列表會自動更新。

步驟二:建立 Google 表單並安裝 formRanger 外掛

  1. 建立 Google 表單,並新增必要的文字或段落問題(姓名/暱稱、聯絡電話、問題說明)。

  2. 新增一個「多選方塊」類型的問題,作為「您要預約的時段」。

  3. 安裝 formRanger 外掛:在表單編輯頁面,點選右上角的「外掛」(像拼圖的圖示) -> 「取得外掛程式」,搜尋 formRanger 並安裝。

步驟三:設定 formRanger

  1. 在表單編輯頁面,點選右上角的「外掛」圖示,然後點選 formRanger。

  2. formRanger 側邊欄會出現。找到「您要預約的時段」這個問題。

  3. 點選該問題旁邊的「+」按鈕或選擇 "Populate from range"。

  4. 選擇你的 Google 試算表 (表單預約系統 (回覆))。

  5. 選擇「工作表 2」。

  6. 在 Column header 下拉選單中,選擇「顯示內容」(這是包含過濾後可預約時段的 E 欄)。

  7. 在 Range name 中為這個範圍取一個容易辨識的名稱(例如「可預約時段」)。

  8. 點選 Save and populate question

  9. **重要設定:**在 formRanger 側邊欄底部找到 Auto-repopulate questions。將 On form submit 和 Every hour 都設定為 ON。這確保表單提交後和每小時都會自動更新選項。

步驟四:設定回應驗證 (限制預約數量)

  1. 在表單編輯頁面,找到「您要預約的時段」問題。

  2. 點選右下角的垂直三點圖示 -> 「回應驗證」。

  3. 設定驗證規則:例如,選擇「選取」 -> 「最多」 -> 輸入數字 4。這樣每個人最多只能預約 4 個時段。

    • 注意: formRanger 更新選項時,這個回應驗證的設定不會自動同步。如果你修改了這裡的最大預約數量,需要手動調整。

步驟五:分享表單

  1. 在表單編輯頁面,點選右上角的「傳送」。

  2. 選擇連結圖示。

  3. 勾選「縮短網址」以獲得一個較短的連結。

  4. 複製並分享這個連結給需要預約的人。

維護提示:

  • 每月初或需要更新預約時段時,只需到 Google 試算表的「工作表 2」,修改 H1 儲存格的「開始日期」即可。A、B、E 欄會自動更新。

  • 如果你想修改排除預約的星期幾,需要修改 E 欄公式中的 REGEXMATCH 部分(例如,若要排除星期六和星期日,將 [一二三四六] 改為 [一二三四五])。修改後向下填充公式。

  • 如果你修改了回應驗證(最多選擇數量),需要手動到表單的設定中修改。

希望這篇文章能幫助你利用 Google 表單和 formRanger 輕鬆建立一個自動更新的預約系統!




沒有留言:

張貼留言

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

【Excel 教學】如何使用 Power Query 快速比對兩份資料的差異?找出新增、刪除與共同項目

在日常的辦公室工作中,我們經常需要比對兩份清單的差異,例如:比較這個月和上個月的訂單清單、核對自己與廠商的帳目、或是找出兩份客戶名單的增減。傳統方法不僅耗時,還容易出錯。 今天,我們要介紹如何使用 Excel 內建的強大工具  Power Query ,只需要設定一次,未來就能一...