Google Apps Script × Google Sheet × 學校行政工作流

GAS 自製代課申請與月底結算系統

這份講義面向自學者,帶你理解一套「線上填寫、即時列印、紙本核章、承辦確認、月底結算」的代課申請系統。它不是要取代所有人事差勤制度,而是協助學校把代課申請資料流整理成可追蹤、可核章、可結算的行政流程。

適合對象教學組長、資訊組、行政協助者
技術核心GAS Web App + Google Sheet
流程定位線上申請與紙本核章並行
學習目標能部署、能測試、能維護

1系統核心概念

本系統的設計重點不是「把紙本搬到線上」,而是重新整理代課申請的資料流與責任節點。

線上申請老師填資料
即時列印產生紙本單
紙本核章保留校內流程
承辦確認確認才結算
月底結算依明細產表
核心句:紙本只負責核章與留存,資料整理、節次明細、狀態追蹤與月底統計交給系統處理。

為什麼不用 Google 表單?

Google 表單很適合收集資料,但送出後無法自然導向「該筆申請的列印頁」。自製 GAS Web App 表單可以做到:送出後立即建立申請編號並跳轉列印代課單。

為什麼仍保留紙本?

許多學校仍需要紙本核章與留存。本系統不是強推無紙化,而是讓紙本不再負責重複抄寫與月底彙整。

2使用流程

老師端流程

1
開啟老師填寫網址
由承辦人提供 GAS Web App 表單網址。
2
填寫代課申請
填寫申請老師、假別、經費來源、日期,以及每一節的班級、課程、代課老師與課務說明。
3
送出並列印
系統建立申請編號,寫入試算表,並立即導向紙本代課申請單。
4
完成紙本核章
依校內流程完成申請人、教學組長、教務主任、校長等核章。
5
交回承辦人
紙本交回後,承辦人才能完成系統確認。

承辦端流程

1
收到核章紙本
檢查紙本申請單是否完成核章。
2
開啟確認連結
從紙本上的系統確認連結,或從「代課申請總表」中的確認連結進入。
3
確認列入結算
確認紙本與系統資料一致後,按下「確認列入結算」。
4
月底產表
執行「產生本月結算表」,系統只統計已確認資料。

3功能總覽

表單

GAS 自製表單

不依賴 Google 表單,可在送出後直接導向列印頁。

明細

每節獨立資料

不同節次可有不同班級、課程、代課老師與課務說明。

紙本

A4 代課申請單

送出後即時產生紙本單,保留核章與承辦確認欄位。

規則

經費來源分類

支援公費代課、自費代課、其他,月底可依經費來源篩選。

假別

身心調適假防呆

選擇身心調適假時,自動鎖定經費來源為公費代課。

結算

月底結算表

承辦確認後才列入結算,並以節次明細逐列產生。

重要觀念:一張申請單不等於一筆代課。實務上,一張申請單可能包含多節課,每一節都可能有不同代課老師,所以月底結算應以「代課節次明細」為準。

4資料表設計

Google Sheet 是這套系統的資料庫。建議不要任意改欄位名稱,因為程式通常會依欄位名稱讀寫資料。

主要工作表

工作表用途重點欄位
代課申請總表 記錄整張申請單的主資料與狀態。 申請編號、申請老師、請假原因、經費來源、狀態、承辦確認、是否列入結算。
代課節次明細 記錄每一節代課的細節。 申請編號、代課日期、節次、班級、課程、代課老師、鐘點費單價、預估金額。
代課老師名冊 設定代課老師與鐘點費資訊。 姓名、Email、身分、鐘點費單價、是否啟用。
月底結算表 承辦確認後,依節次明細產生月結資料。 結算月份、經費來源、代課老師、日期、節次、課程、預估金額。
系統設定 存放學校名稱、預設鐘點費與教務處 Email。 設定項目、設定值、說明。
操作紀錄 保留重要操作紀錄。 時間、操作者、動作、申請編號、說明。

主表與明細表的關係

代課申請總表(主表)
  申請編號:SUB-11507-001

代課節次明細(子表)
  SUB-11507-001|第1節|502|社會|王老師
  SUB-11507-001|第6節|301|數學|待教務處安排
如果代課老師是「待教務處安排」,列印頁的代課老師欄位應顯示空白,不要把「待教務處安排」當成正式姓名。異常檢查仍應提醒承辦人尚未安排代課老師。

5部署方式

檔案結構

Code.gs ApplicationForm.html PrintTemplate.html ConfirmTemplate.html

第一次安裝步驟

  1. 建立一份新的 Google 試算表,作為系統資料庫。
  2. 點選 擴充功能 → Apps Script
  3. 貼上 Code.gs
  4. 新增三個 HTML 檔:ApplicationFormPrintTemplateConfirmTemplate
  5. 儲存所有檔案。
  6. 在 Apps Script 執行 setupSystem()
  7. 依照畫面提示完成授權。
  8. 部署為 Web App。
  9. 回到 Google Sheet,重新整理頁面。
  10. 代課管理 → 顯示老師填寫網址 取得表單網址。

Web App 部署設定

設定項目建議值說明
部署類型網頁應用程式必須選 Web App,不能只儲存程式碼。
執行身分讓系統以部署者權限寫入試算表。
存取權限機構內使用者/知道連結的任何人依學校帳號環境與資安政策選擇。
修改程式後要重新部署:Apps Script 修改後只按儲存,不會更新正式 Web App。請到 部署 → 管理部署作業 → 編輯 → 版本選「新增版本」→ 部署

6日常操作

Google Sheet 自訂選單

系統初始化後,Google Sheet 上方會出現 代課管理 選單。

選單項目使用時機
初始化系統工作表第一次安裝或欄位缺漏時使用。
顯示老師填寫網址取得 GAS Web App 表單網址,提供給老師填寫。
依申請編號查詢承辦人收到紙本後,可用申請編號快速定位資料。
標記紙本已交回收到紙本但尚未確認列入結算時使用。
確認列入結算紙本核章完成且資料一致後使用。
退回修正紙本或系統資料有誤時使用。
取消申請該筆代課不成立時使用。
產生本月結算表月底彙整本月資料。
指定月份產生結算表補產某月份資料,例如 11507
檢查異常資料月底結算前,檢查重複安排或資料缺漏。

申請編號規則

格式:SUB-民國年月-流水號
範例:SUB-11507-001
說明:115 年 7 月的第 1 筆申請

7紙本列印與核章

老師送出表單後,系統會立即導向列印頁。這張紙本代課申請單的重點是:讓每一節代課內容清楚,並保留學校核章流程。

紙本申請單包含

  • 申請編號與列印時間。
  • 申請老師、職務班級、請假原因、經費來源、代課日期。
  • 代課內容明細:節次、班級、課程、代課老師、代課老師簽名、課務說明。
  • 核章欄位:申請人、教學組長、教務主任、校長。
  • 承辦確認欄位:紙本已核章、系統資料與紙本一致、列入月底結算。
  • 系統確認連結。
代課老師簽名欄位應跟著每一節明細走,不應放在下方統一核章欄位。因為不同節次可能有不同代課老師。

列印頁設計原則

  • A4 一頁優先,但不能壓縮到難以閱讀。
  • 2 至 4 節代課應維持正常字體與列高。
  • 5 節以上才啟用 compact 模式。
  • 系統確認連結應縮成頁尾小字,避免擠到第二頁。

8月底結算

月底結算不是抓所有申請資料,而是只抓承辦人確認後的資料。

列入結算的條件

主表狀態 = 已確認
主表承辦確認 = 已確認
主表是否列入結算 = 是
明細狀態 = 已確認
明細是否列入結算 = 是

不列入結算的情況

  • 老師已送出,但尚未列印或尚未核章。
  • 紙本已交回,但承辦人尚未確認。
  • 資料被退回修正。
  • 申請已取消。
  • 代課老師仍為「待教務處安排」。

月底結算表每列代表什麼?

每一列代表一節代課,而不是一張申請單。這樣才能正確處理不同節次、不同課程、不同代課老師的情況。

9經費來源與身心調適假規則

經費來源

經費來源系統處理備註
公費代課列入正式結算與統計。可作為後續請款或鐘點費統計依據。
自費代課列入紀錄與分類統計。不應與公費代課混同,月底可用經費來源篩選。
其他列入統計,但提醒承辦確認。適合特殊經費或專案經費。

身心調適假

當請假原因選擇「身心調適假」時,系統前端應自動把經費來源鎖定為「公費代課」;後端也要再次檢查,避免繞過前端送出錯誤資料。
身心調適假 → 固定公費代課
前端:自動帶入並鎖定經費來源
後端:寫入資料前再次強制修正
異常檢查:若身心調適假不是公費代課,列為異常

10常見問題

開啟後出現「Google 雲端硬碟無法開啟這個檔案」

通常代表開錯網址,或複製到部署 ID 而不是 Web App URL。正確網址應類似:

https://script.google.com/macros/s/一長串部署ID/exec

出現「缺少申請編號」

通常是直接打開列印頁或確認頁,但網址沒有帶 id。列印頁應由系統送出後自動導向,或從「代課申請總表」的列印連結開啟。

修改程式後畫面沒有變

Apps Script 修改後必須新增版本重新部署。只按儲存不會更新正式 Web App。

列印變成兩頁

通常是系統確認連結太長、核章欄位過高、或表格列高過大。可把系統確認連結縮成頁尾小字,並在明細超過 4 或 5 筆時啟用 compact 模式。

代課老師顯示「待教務處安排」

列印頁應把「待教務處安排、待安排、教務處安排、未定」顯示為空白,但資料庫仍保留原值,方便承辦人後續追蹤。

11自我檢核練習

完成部署後,請用以下測試流程確認系統是否可用。

  1. 執行 setupSystem()
  2. 部署 Web App。
  3. 開啟老師填寫網址。
  4. 建立一筆代課申請。
  5. 請假原因選「身心調適假」,確認經費來源自動鎖定「公費代課」。
  6. 勾選第1節與第6節。
  7. 第1節填:502、社會、王老師。
  8. 第6節填:301、數學、待教務處安排。
  9. 送出後確認跳到列印頁。
  10. 檢查第6節代課老師在紙本上是否顯示空白。
  11. 檢查核章欄位是否只有申請人、教學組長、教務主任、校長。
  12. 開啟確認連結,按下「確認列入結算」。
  13. 執行「產生本月結算表」。
  14. 確認結算表每一節各一列。
  15. 執行「檢查異常資料」,確認系統會提醒尚未安排代課老師的明細。
這個測試流程的目的不是追求完美資料,而是確認系統的核心防呆與流程狀態都有正常運作。

12GitHub Repository 整理建議

若要將本系統整理成 GitHub repo,建議讓專案不只是放程式碼,也要包含部署說明、資料表結構、流程圖與維護規範。

建議 repo 結構

gas-substitute-teacher-system/ ├── README.md ├── AGENTS.md ├── LICENSE ├── .gitignore ├── appsscript.json ├── src/ │ ├── Code.gs │ ├── ApplicationForm.html │ ├── PrintTemplate.html │ └── ConfirmTemplate.html ├── docs/ │ ├── setup-guide.md │ ├── workflow.md │ ├── data-schema.md │ ├── deployment-guide.md │ ├── changelog.md │ └── screenshots/ │ └── .gitkeep └── examples/ ├── sample-settings.md └── sample-print-layout.md

AGENTS.md 應提醒 Codex 的重點

  • 不要把 Google 表單重新導入主流程。
  • 不要讓未確認資料進入月底結算。
  • 不要把代課老師放在統一核章欄位。
  • 代課老師簽名欄位應跟隨每一節明細。
  • 身心調適假必須鎖定公費代課。
  • 列印頁必須適合 A4 紙張。
  • 不要硬編碼 Web App URL。