跳到主要內容
resoluna.
上線中期間:2026-04 – 2026-10

國文作業查詢系統

一張老師本來就在用的成績表,加一頁網頁,學生自己查「我還欠哪些作業」

我的角色
需求定義、資料欄位取捨、第一線使用者(任課教師);以 Gemini 產出程式
技術
Google Apps ScriptGoogle SheetsTailwind CSS (CDN)
AI 協作
GeminiClaude Code
3
使用班級 · 國中七年級三個班,學生、導師、任課教師共用
235
程式碼 · 兩個檔案
0
基礎設施成本 · 一個 Google 帳號就能部署

01問題

我是國中國文的任課教師,平時成績記在一張 Google 試算表裡:每一課的大卷、小卷、習作、學習單,各有成績、繳交與訂正狀況。問題不在記錄,在查詢。學生下課一個一個來問「我還欠什麼」,我得翻表回答;寫在黑板上又佔空間又不清楚。我要的不是作業管理系統,只是讓學生能自己看到自己那一列的「欠什麼」。

02使用者與情境

三個七年級班級的學生,用手機在下課或回家時查自己的進度。三個班的導師,用它看哪些學生還欠什麼,好提醒家長協助。還有我自己:跨三個班的任課教師,上課前掃一眼全班缺交狀況,不必再寫黑板。三種人看的是同一頁,只是切換「全班」或「某個座號」。

03限制條件

要立刻發佈,沒有時間做一個專案。沒有預算、沒有伺服器。資料本來就在試算表裡,而且那張表是成績表,有姓名和分數,不能原樣公開。學生用手機,多一個登入步驟就少一半人用。

04方案與取捨

選最快最直接的路:一支綁在原本試算表上的 Apps Script Web App,資料在 Google Sheet、執行在 Apps Script、程式用 Gemini 產出,整條鏈都在 Google 生態系,一個帳號就能部署、零成本。程式只讀繳交與訂正欄位,成績與個資不進入程式的視野。刻意匿名、只顯示座號,用低門檻換使用率;代價是任何拿到網址的人都看得到全班缺交狀況,所以網址只發給班上。

關鍵決策

05人機合作方式

我負責定義邊界:哪些欄位可以出去(繳交、訂正)、哪些不行(姓名、成績)、畫面只用座號、不要登入。Gemini 在這些條件下產出整支程式。2026 年 10 月把原始碼納入 git 時換成 Claude Code:它先用部署 ID 與版本 diff 證明 repo 裡的就是線上跑的那份,再做隱私檢視,發現「畫面不顯示姓名、但回傳資料含姓名」,依規則先回報不擅改;我決定移除後,它改一行並更新同一個部署。

人機合作關鍵時刻

  1. 從成績表裡切出可以公開的那一塊

    我判斷了什麼

    原表是平時成績表。我決定只拿繳交與訂正欄位、畫面只顯示座號、不要登入,而且要能立刻發佈給三個班。

    AI 做了什麼

    Gemini 依這些條件產出 Apps Script:doGet 回一頁網頁、解析三層表頭、只認四種作業項目,以及手機優先的卡片介面。

    結果

    立即上線,三個班的學生、導師與任課教師都在用。

    一句話 先講清楚哪些資料不能出去,再講要做什麼

  2. 納入版控:先證明這就是線上那份

    我判斷了什麼

    原始碼只在 Apps Script 編輯器裡,而我的 Google 帳號下有好幾個長得像的專案。我決定以「線上網址正在跑的那個」為準,而不是以專案名稱為準。

    AI 做了什麼

    Claude Code 用 clasp 列出每個候選專案的部署 ID 與線上網址比對,再把線上部署版本與 HEAD 逐檔 diff,確認完全相同後才 clone 進 repo。

    結果

    repo 內的 src/ 與線上版本完全相同,部署網址未變。

    一句話 納入版控的第一步不是 commit,是證明你 commit 的就是線上跑的那份

  3. 隱私檢視:畫面沒顯示,不代表沒送出去

    我判斷了什麼

    我要求檢查程式裡有沒有寫死學生資料。聽完「按 F12 就看得到全班姓名」的說明後,我決定移除姓名欄位,並要求用同一個部署更新,網址不能變。

    AI 做了什麼

    Claude Code 確認沒有寫死資料,但指出 getStudentData 回傳的 JSON 含姓名欄;依規則先回報、不擅改,待我決定後才改一行並以 clasp deploy -i 更新同一個部署。

    結果

    回傳資料不再含姓名;畫面與網址都沒有變。

    一句話 審資料外洩要看回傳的 payload,不是看畫面

06成果

三個班實際使用中。學生能清楚追蹤自己的進度;全部完成時會看到「恭喜!作業完成!」,達標被看見,有激勵效果。導師能具體告訴家長要協助哪些項目。我自己管理三個班的繳交情形更輕鬆,不用再寫黑板。老師的工作流程完全沒變,還是改同一張表。兩個檔案、235 行、零基礎設施成本。

畫面

國文作業查詢系統 – 1
國文作業查詢系統 – 2

07如果重來

一開始就不要把姓名放進回傳資料,只送座號;這次是事後補的。分頁選擇不要寫死認「(6)」這個字樣,改成可設定,換學期才不會抓錯班。至於什麼時候才值得從 Apps Script 升級成真正的 App:要跨多科、要家長帳號、要推播通知,或者試算表表頭開始為了程式而不是為了人設計的時候。在那之前,一頁 Apps Script 就是正確的規模。