為什麼寫小型程式是 ETL 的最強槓桿?實測免費版 Gemini Canvas「初學者直白版 V1」與「指定欄位穩定版 V2」的真實差異,並看懂 Canvas 的天生限制與 V3 多題庫專業演進方向。
傳統處理資料時,若只靠人工複製貼上或純對話問 AI,常遇到「超過字數被偷刪、格式每次長不一樣、轉完的 Excel 還是死板板無法互動」三大痛點。透過 Antigravity(本地批次腳本) 搭配 Gemini Canvas(前端單檔小程式),能把 T 與 L 的效益放到最大:
從政府公開網站(如 iPAS 學習資源頁)批次抓取 14 份歷屆公告試題 PDF 與 7 份學習指引,保存為原始素材庫。
小程式優勢 1:100% 規則可重複!
消除 PDF 跨頁頁首頁尾、將擠在同一格的「題號+題幹+(A)(B)(C)(D)」拆解為固定 7 欄英文 Schema(question_no ~ option_d),50 題零遺漏。
小程式優勢 2:資料直接變互動系統!
用 Gemini Canvas 生成單檔 HTML 刷題系統,讀取標準化 Excel 即可「隨機/指定題號測驗、考後匯總分析、一鍵印出 PDF 成績單」,並發布至 Google 協作平台。
// ...其餘程式碼同上 而直接壞掉)。
edit_file 而非整檔重寫),就必須切換到 Google Antigravity 開發環境。
| 比較維度 | 🎨 Gemini Canvas(瀏覽器內單檔畫布) | 🚀 Google Antigravity(Agentic 專案開發環境) |
|---|---|---|
| 最佳定位 | 單一 HTML 小工具、視覺化轉換器、輕量刷題頁、快速原型 | 多檔案專案、批次 PDF 爬蟲與 ETL 管線、複雜系統架構 |
| 修改耐受度 | ⚠️ 低(建議同一視窗不超過 2~3 次大改,大改請重開新對話) | ✅ 極高(支援局部 Diff 精準修改、跨檔案重構與自動測試) |
| 適合程式碼規模 | 約 300 ~ 800 行內之單一 HTML(含 CSS/JS) | 不限規模,支援模組化拆分、Python 後端腳本與前端整合 |
| 分享與部署方式 | 🌟 一鍵匯出至 Google 協作平台 (Google Sites),LINE 直接點開 | 本地直接執行、產出實體 Excel/CSV 題庫檔、或部署至正式伺服器 |
我們首先透過自動化腳本將 iPAS AI 應用規劃師(AIAP)學習資源頁 上的所有公開試題與指引(共 14 份歷屆公告試題 PDF + 7 份學習指引/勘誤表)全數抓取至 google-etl/raw_pdfs/,並選擇最新一梯次的 「115年第三次初級_第一科_人工智慧基礎概論_公告試題.pdf」 作為單檔深度示範主角:
(A) 且句尾帶有全形分號 ;。snake_case),跨系統匯入、寫 Python/JS 讀取時不會因中文編碼或空白字元出錯。option_a ~ option_d):前端刷題系統才能做到「點擊單一選項卡片」、「交卷後個別標紅/標綠」。(A) 前綴與句尾 ;:未來若要做「選項順序隨機洗牌」,才不會出現「選項 A 裡面寫著 (C)」的荒謬畫面。| 順序 | 英文欄位名稱 (Column Key) | 資料型別 | Transform 清洗規則說明 | 轉換後實際資料範例(第 1 題) |
|---|---|---|---|---|
row[0] |
question_no |
Integer | 剝離題號後的句點 .,保留純數字 1 ~ 50 |
1 |
row[1] |
answer |
String | 大寫單一字母(A / B / C / D) |
A |
row[2] |
question |
String | 自動縫合 PDF 跨頁與跨行斷句;遇「甲、乙、丙、丁、」保留換行 | 某製造工廠計劃導入AI 預測產線設備的故障風險...下列哪一種機器學習方法最適合? |
row[3] |
option_a |
String | 移除開頭 (A) 與句尾分號 ; |
監督式學習(Supervised Learning) |
row[4] |
option_b |
String | 移除開頭 (B) 與句尾分號 ; |
非監督式學習(Unsupervised Learning) |
row[5] |
option_c |
String | 移除開頭 (C) 與句尾分號 ; |
強化學習(Reinforcement Learning) |
row[6] |
option_d |
String | 移除開頭 (D) 與句尾分號 ; |
半監督式學習(Semi-supervised Learning) |
| question_no | answer | question | option_a | option_b | option_c | option_d |
|---|
在第一階段測試中,我們模擬一般初學者的習慣:把剛轉好的 115_3_elementary_sub1_ai_basics.xlsx 附加到免費版 Gemini,不講任何技術名詞、也不提欄位英文名稱,直接請它用 Canvas 做一個隨機抽 5 題、考完看分析與列印 PDF 的網頁。
Gemini 自動規劃並生成了包含四大模組的單頁應用程式:
.xlsx 題庫檔,並宣稱具備「自動偵測題目、選項 A/B/C/D、答案與解析欄位」功能。@media print 列印成 PDF 功能。
115_3_elementary_sub1_ai_basics.xlsx 後,畫面竟出現「第 1 題 29」、「選項 A. B」!
// AI 用 h.includes(k) 只要欄位名稱「包含」關鍵字就抓!
const getIndex = (keywords) => {
return headers.findIndex(h => keywords.some(k => h.includes(k)));
};
const qIdx = getIndex(['題目', '問題', 'question', 'title']);
const aIdx = getIndex(['選項a', 'a', 'optiona']);
const bIdx = getIndex(['選項b', 'b', 'optionb']);
29?question_no(題號)。AI 找題目欄 qIdx 時檢查誰包含 'question',結果第 0 欄 question_no 剛好包含 question!於是 AI 把「題號 29」當成了題目本文,真正的題目被丟掉了!
B?aIdx 時,關鍵字裡寫了一個單字母 'a'!Excel 第 1 欄叫做 answer(答案),開頭正好有字母 'a'!於是 AI 把第 29 題的正確答案 B 當成了「選項 A 的文字」!
當我們只是要單純修好 V1 的欄位錯位(不加複雜新功能)時,只要在同一個對話視窗補上一段「指出錯誤現象+告知 7 個英文欄位名稱」的修正 Prompt,免費版 Gemini Canvas 就能在 第 2 輪對話(V1-2) 立即修復!
AI 修正重點說明:將欄位名稱與 question_no、answer、question、option_a~d 進行完全相等(Exact Match)的比對,避免模糊比對導致 question 被誤抓為 question_no 或選項被誤抓為 answer,並於檢討頁面移除答案解析區塊。
// ✅ V1-2 修正後(第 329-339 行):改用 getIndexExact 完全相等比對
const getIndexExact = (exactKeys) => {
return headers.findIndex(h => exactKeys.includes(h));
};
const qNoIdx = getIndexExact(['question_no', 'question_number', '題號', '序號']);
const qIdx = getIndexExact(['question', '題目', '問題']);
const ansIdx = getIndexExact(['answer', '答案', '正確答案']);
const aIdx = getIndexExact(['option_a', 'optiona', 'a', '選項a']);
發現 V1 的欄位錯位後,我們遵循 Tab 1 的心法——不在舊對話裡反覆修補,而是直接把「7 個固定英文欄位名稱」與「指定題目需求」寫成清晰的 V2 Prompt。免費版 Gemini Canvas 立即產出 100% 精準對應、功能大升級的穩定版本!
1. 改用完全相等比對(===),徹底根除欄位錯位:
// ✅ V2 改用完全相等比對,不再誤判 question_no 與 answer!
const getVal = (keyName) => {
const foundKey = Object.keys(row).find(
k => k.trim().toLowerCase() === keyName.toLowerCase()
);
return foundKey ? String(row[foundKey]).trim() : '';
};
const qNo = getVal('question_no') || (idx + 1).toString();
const ans = getVal('answer').toUpperCase();
const questionText = getVal('question');
2. V2 五大進化重點:
1-5, 10, 34、(C) 題號勾選面板+關鍵字搜尋。alert/confirm。
過去用 AI 寫好一個單頁 HTML 工具後,最困擾行政與非工程人員的就是「怎麼傳給同事或學員用?」——如果把 .html 檔案直接丟到 LINE 群組,手機點開只會看到一堆原始碼或因安全限制無法執行;如果要架站,又得學 GitHub Pages、Cloudflare Pages 或 Netlify。現在 Gemini Canvas 內建「匯出 ➔ Google 協作平台」,徹底解決最後一哩路!
.html)。
https://sites.google.com/view/...,丟到 LINE 群組時不會被當成可疑檔案阻擋,手機點開就能直接上傳題庫或開始刷題!
課堂上可請學員直接用手機或電腦點開以下三個真實連結,親眼見證「V1 踩坑 ➔ V1-2 單點修正 ➔ V2 功能升級」的完整演進:
當我們掌握了「標準英文 Schema Excel + V2 穩定版基底」之後,如果學員或企業部門想繼續往 V3 專業級題庫與培訓系統 邁進,可以朝向以下 四大構面、12 個專業功能方向 擴充(提醒:若功能組合較複雜,建議使用 Google Antigravity 或在 Canvas 分模組迭代):
question_type(single / multiple / group)與 image_url 欄位,遇到中級題組題(共用一段長文情境連考 3 題)時自動並排顯示。
localStorage 自動記錄歷次答錯過的題號與錯誤次數(如「Q34 已累計答錯 3 次」),下次打開網頁時可直接點選「🔥 專攻歷史常錯題」。
topic(對應 iPAS 評鑑主題:AI 概念與治理、資料處理與分析、機器學習、鑑別式與生成式 AI),交卷時用 Chart.js 繪出五角雷達圖,一眼看出哪個章節最弱。
office-gas 學到的 GAS Web App Webhook:員工考完按下交卷,除了自己印 PDF,分數與錯題題號會自動寫回主管的 Google 試算表後台!