每到月底,你是不是也會打開日曆,一堂一堂數這個月教了幾堂課,再查每個場館的鐘點費?
我平常教 Zumba 和皮拉提斯,課程分散在不同場館,費用也不一定相同。日曆已經記了一次,月底卻還要重新整理,總覺得這件事應該能更省力。
所以,我把 Google 日曆、試算表和 Apps Script 串起來,做成一個自己的鐘點費網站。打開網頁、選月份,就能看各場館的應收金額,也能核對每一堂課。
如果你不會寫程式,也可以先從這篇開始。比較麻煩的建檔、串接和部署,可以請 Codex 協助;你主要負責準備資料、確認授權,以及檢查算出來的金額。
先玩看看:完成後的網站長什麼樣?
我準備了一個公開示範網站,你可以先點進去切換月份,看看收入總覽、課程明細和歷史紀錄。
例如示範資料中的 2026 年 10 月,總共有 35 堂課、6 個場館,應收金額是 37,400 元。這些都是示範資料,不是我的實際收入。

圖 1|先看當月總額、堂數和場館數,再往下查看各場館的收入。截圖來自公開示範網站。
先提醒一下:公開示範版是讓大家體驗的唯讀展示,沒有保存或修改按鈕。接下來要做的,是只有你自己能登入、能重新計算和保存月份的私人版本。
開始之前,先準備這幾樣東西
- 你自己的 Google 帳號。
- 一個專門記錄教課行程的 Google 日曆。
- 一份整理好課程費用的 Google 試算表。
- 能操作瀏覽器的 Codex 環境,以及一個存放程式備份的本機資料夾。
這篇以「每堂固定費用」為例。如果你的收入是抽成、依分鐘計費,或還要扣場租與稅額,記得先把規則補充給 Codex,不能直接照這個算法算。
步驟 1:把課程放進專用日曆
先在 Google 日曆建立一個「運動教學」日曆,把要計算鐘點費的課程放進去。用獨立日曆,會比把私人約會、進修和教課混在一起更好整理。
一開始不用急著放完整年度的課表。先在同一個月份建立兩堂測試課,名稱都填「測試 Zumba」,確認它們真的放在教學日曆裡。
接著,在電腦版 Google 日曆打開這個日曆的「設定與共用」,找到「整合日曆」裡的「日曆 ID」,先複製下來。找不到位置,也可以請 Codex 協助你找。你的私人日曆不用設成公開。
步驟 2:用一張表,告訴系統每堂課多少錢
新增一份 Google 試算表,把其中一個工作表命名為「設定表」。接著,照下面的順序填入欄位;第一列的文字要一樣,Codex 才能依這個格式建立程式。
| 課程名稱關鍵字 | 場館 | 鐘點費 |
|---|---|---|
| 測試 Zumba | 測試場館 | 800 |
| 南港 Zumba | 南港教室 | 700 |
| 北車皮拉提斯 | 北車教室 | 850 |
表格的第一欄是讓程式拿來比對日曆標題的關鍵字。例如你設定「測試 Zumba」,日曆寫「測試 Zumba 代課」也能命中。先把關鍵字取清楚,避免同堂課同時對到好幾個不同費率。
第三欄雖然叫「鐘點費」,這個版本實際上是每堂固定金額。先填純數字就好,不用加「元」,也不會自動依上課分鐘數乘算。
完成後,把整份試算表網址複製下來。到這裡,你手上應該已經有兩樣東西:自己的日曆 ID,以及自己的試算表網址。
步驟 3:把這段 Prompt 貼給 Codex
以前這一步可能要你自己開 Apps Script、分別貼上後端程式和 HTML。現在可以先把需求說清楚,請 Codex 協助完成這些操作。
先用自己的 Google 帳號登入可供 Codex 操作的瀏覽器,再把下面整段 Prompt 貼進 Codex。你只需要先換掉「日曆 ID」和「試算表網址」兩處;如果費率工作表不是叫「設定表」,也一起改掉。
不過,不是每個 Codex 環境都能直接操作瀏覽器。下面的 Prompt 會先請它確認能力;如果只能寫程式、無法代操作,它應該說清楚卡在哪裡,而不是把只有程式碼當成網站已經做好。
這段 Prompt 是按照功能需求建站,做出來的外觀可能和我的示範略有不同,但需要完成的計算、保存與驗收規則都寫在裡面。
複製這段話,貼給 Codex
請幫我建立「個人鐘點費收入網站」,部署到我自己的 Google Apps Script,手機與電腦都能用同一網址查看。我不熟悉程式,請完成可代操作的部分,不要只列步驟或叫我自行貼大量程式碼。
我的資料
日曆 ID:【貼上你自己的教學日曆 ID】
Google 試算表網址:【貼上你自己的試算表網址】
費率工作表:設定表
欄位:A1 課程名稱關鍵字、B1 場館、C1 鐘點費
時區:Asia/Taipei
計價:每堂固定費用,支援小數,不按分鐘乘算
先確認能力與資料
請先確認你是否有可操作、已登入 Google 的瀏覽器,以及讀取試算表的工具。沒有專用 Apps Script 工具時,可使用具備授權的瀏覽器介面;若無法代操作,明確說明缺少什麼,仍先準備完整程式檔與精確的手動接續步驟。不要假裝部署成功。
先讀取我提供的試算表與目標日曆,確認欄位、權限與是否有測試事件。不要把資料改成公開。
請製作私人使用版
建立獨立 Apps Script 專案與前後端檔案,保留本機備份,不覆寫我已有的程式、報表或其他資料。若要沿用既有專案,先確認沒有函式名稱或檔案衝突。
提供繁體中文、手機友善的介面,可選月份、看月總額、各場館收入、逐堂明細、搜尋與場館篩選。
計算規則
用日曆標題比對課程關鍵字,統一全半形、空白與英文大小寫。每堂課只計一次,最長關鍵字優先;有歧義、無費率、停課、取消、全天或疑似重複事件,需清楚列出,不能默默重複加總。重複課程須辨識每次發生的開始時間。
以台北時間的課程開始日歸屬月份,月初包含、下月月初不包含。空白場館顯示未指定場館,不自行猜測。
本月與未來月份可讀取日曆試算,標示為排課應收估算,不視為已入帳。
歷史與平常操作
沒有快照的月份,直接讀日曆計算,不要求我每個月進 Apps Script 執行初始化。
已保存月份先顯示當時快照;按「重新計算」才讀最新日曆與費率。
提供「保存這個月份」,先顯示確認,再把明細、當時費率、核對結果、總額、時間與版本保存到我這份試算表的新工作表。服務端重新核算總額,重試不要重複寫入。
保存採新增版本,保留舊紀錄;未命中與未核對事件不得自動當成收入。保存不代表完成收款。
若第一次回算舊月份只能用現在的費率,請明確提示。不要聲稱目前費率就是當年的實際費率。
首次初始化只做一次;日後我只維護日曆與費率,在網頁重新計算與保存即可。此次不要新增自動結算、排程或寄信。
部署與授權
使用我自己的 Apps Script 部署,執行身分採擁有者,網頁存取限制只有我自己,後端也檢查擁有者身分。不要部署成公開示範版或另傳到 Sites。
先準備好可審閱程式,再處理初始化與部署。需要 Google 新授權、驗證或本人確認時,請停在那個畫面,告訴我程式要求哪些權限與用途,讓我確認後繼續。不要索取我的密碼、驗證碼或要求無條件略過安全警告。
完成驗收
用同月份兩堂「測試 Zumba」、每堂 800 元的測試資料,確認總額為 1600 元。不要為了測試擅自增加或刪除真實事件。
驗證日曆讀取、場館加總、保存、重新整理後回看與歷史費率保留。額外檢查停課與多重關鍵字不會重複計費,可用本機合成資料測試。
最後交付正式 /exec 網址、Apps Script 專案網址、備份檔與簡短使用說明,區分實際通過的測試與尚未驗證的手機操作。只有本機 HTML、畫面截圖或 /dev 網址,都不算完成部署。
步驟 4:遇到授權時,再由你本人確認
這裡很容易混淆:讓 Codex 操作瀏覽器,跟讓你建立的網站讀取 Google 資料,是兩件不同的事。
前者是讓 Codex 能幫你開網頁、建立檔案和設定部署;後者是 Google 確認這個 Apps Script 是否能讀取日曆、寫入試算表,以及辨識登入帳號。連接 Google Drive 或 Calendar,不代表 Apps Script 就自動授權完成。
Codex 可能會先準備好程式,再請你登入、選帳號或審查權限。確認是你剛建立的專案,要求也符合這個工具的用途,再由你決定是否同意。不要把密碼或驗證碼貼進對話;遇到看不懂的安全提示,先請它說明。
也留意一下:Google 的權限畫面可能涵蓋多份日曆或試算表,不是填了一個 ID,授權範圍就一定只限那份資料。
完成後,回到原本對話,直接回覆:「我已完成 Google 授權,請接續初始化、私人部署與驗收,保留原本資料,不要另外重建第二個專案。」
第一次初始化,是幫網站準備存檔位置,通常第一次建站做一次就好。它不是每個月都要執行,更不是每新增一堂課就要重做。
步驟 5:先用兩堂測試課,確認網站真的算對
網站出現畫面,不代表每個數字都正確。先拿剛才的兩堂「測試 Zumba」驗收:每堂 800 元,兩堂合計就應該是 1,600 元。
請確認 Codex 交付的是正式的 /exec 網址。只有本機 HTML、截圖,或以 /dev 結尾的測試網址,都還不是這篇要的完成品。
- 選擇測試月份,確認測試場館顯示 2 堂、1,600 元。
- 打開逐堂明細,確認日期、課名、場館與費率都對得上。
- 保存月份後重新整理,確認仍然能從月份紀錄查看。
- 檢查試算表新增了存檔工作表,原本資料沒有被清空。
- 用手機登入同一個 Google 帳號,開啟同一個正式網址,確認可以查看。

圖 2|不要只看總額,也要往下核對每堂課的日期、場館與金額。公開示範版提供搜尋、場館篩選與 CSV 匯出。
你也可以再測試一次歷史費率:先保存兩堂合計 1,600 元的紀錄,再把「測試 Zumba」費率改成 900。舊紀錄應該還是 1,600 元,只有按重新計算後才變成 1,800 元。測完記得把測試費率改回 800。
這個修改只針對測試列。若要請 Codex 幫你改,請明確指定,避免動到正式課程的費率。
做好以後,平常怎麼用?
平常照常在日曆排課就好。月底或想核對收入時,開啟網站、選月份;日曆有新增或更正,就按「重新計算」。
確認課程與費率沒問題,再按「保存這個月份」。它會留下當時的明細、費率、總額和保存時間,方便你之後回看。

圖 3|月份紀錄會列出已保存的月份,點「查看月份」就能回看。圖中為公開版預先建立的 9 月與 10 月示範紀錄。
已保存的紀錄不會自動跟著日曆變動,因為我們希望保留當時核對的依據。如果過去的課程有更正,就重新計算,再保存新版本。
另外,「應收」不等於「已收款」,按保存也不代表已完成收款對帳。這個流程目前是手動核對後保存,沒有自動月底結算或寄信。
如果卡住,可以直接這樣問 Codex
只有程式碼,沒有網站:
「你目前只提供了程式檔,請接續完成 Apps Script 初始化、私人部署與驗收。如果有權限或工具限制,請指出卡在哪一步,並告訴我最少需要自己做什麼。」
網站沒資料,或金額不對:
「請檢查選定月份、事件所在日曆、設定表欄位和費率,逐筆列出為什麼有計入或沒計入。先檢查,不要直接覆寫設定、刪除事件或把資料設成公開。」
手機打不開:
「請先確認這是正式 /exec 網址、手機登入的是部署擁有者帳號,以及網站仍限制只有我自己。請找出是登入、授權還是程式錯誤,不要直接改成公開網站。」
如果是在 IG 內建瀏覽器遇到登入問題,可以先改用手機平常的瀏覽器試試看。
把月底重算的時間,留給自己
這套工具最有用的地方,是把你已經記在日曆裡的課程,整理成可以核對、也能留下紀錄的收入頁面。
一開始先讓兩堂測試課算對,再慢慢加入自己的正式課表。你不必先變成工程師,但仍然要看懂自己的費率規則,確認每個月算出來的數字。
如果你只是想看看操作,可以先玩公開示範;如果想做自己的版本,就準備好日曆 ID 和試算表網址,從上面的 Prompt 開始。
延伸閱讀
Google:Apps Script 網頁應用程式與部署設定
留言