2026年8月29日 星期六

資訊組AI小幫手

校園資訊組 LINE Bot AI 智慧小幫手

用 Google 試算表當資料庫,結合 Gemini API 與 Google Apps Script, 打造能回答校園網路、帳號、研習、平板與設備問題的 24 小時 AI 助手。

適用於中小型國小、國中、高中職的資訊組長、資訊行政人員與校務數位推動教師。
因為沒有採用付費方案,大型學校使用時,免費額度可能無法支應。

更新日期:2026 年 8 月 28 日

文章較長,閱讀前請先準備一杯茶,算是我的實作筆記。

「Wi-Fi 帳號、密碼是什麼?」 「公務帳號是多少?為什麼登不進去?」 「印表機要如何安裝?」
每天的固定行程真的很耗時,老師們也常常需要排隊等候。

剛好在 Facebook 上看到一位強者分享學校使用的開源 LINE Bot, 便試著玩玩看,希望能減輕行政負擔,也減少老師們等待回覆的時間。

核心概念:
Google 試算表負責儲存學校資料,Google Apps Script 負責串接服務, Gemini 負責整理答案,LINE 負責讓老師用熟悉的聊天室提問。

一、完成後,會得到什麼?

📚 學校專屬知識庫 將校內 Wi-Fi、帳號、設備、研習與行政流程整理在 Google 試算表中。
🤖 LINE AI 小幫手 教師可以直接在 LINE 詢問,Bot 會依據學校資料回覆。
🛠️ 知識庫管理後台 管理者可登入網頁新增、修改、刪除知識庫內容。

二、整體運作流程

老師在 LINE 提問 LINE Webhook Google Apps Script Google 試算表知識庫 Gemini LINE 回覆

三、開始前請先準備

資安提醒:
LINE Channel access token、Gemini API Key、管理者密碼都屬於機密資料。 請不要貼到公開文章、公開簡報、GitHub、群組或社群貼文中。 本文中的設定值都請替換成您自己的資料。
1

建立 LINE 官方帳號並啟用 Messaging API

約 5~10 分鐘完成
流程提醒:
現在請先建立 LINE 官方帳號,再從官方帳號管理後台啟用 Messaging API。 
不再是直接到 LINE Developers Console 建立 Messaging API Channel。
  1. 進入 LINE Official Account Manager,使用您的 LINE 帳號或 Business ID 登入。
    https://tw.linebiz.com/login/
  2. 建立新的 LINE 官方帳號。 建議名稱可以是: 校園資訊組 AI 小幫手
  3. 填寫官方帳號基本資料,例如:
    • 帳號名稱:校園資訊組 AI 小幫手
    • 帳號簡介:協助全校同仁查詢校園網路、帳號、研習、設備與平板借用資訊
    • 組織名稱:學校名稱或資訊組名稱
  4. 建立完成後,進入官方帳號管理後台:
    設定 → Messaging API → 啟用 Messaging API
  5. 如果畫面要求選擇 Provider,請選擇學校資訊組預計長期管理的 Provider。
  6. 啟用完成後,進入 LINE Developers Console, 選擇剛才使用的 Provider,再選擇 Messaging API Channel。
Provider 選擇請特別小心:
LINE 官方帳號指定 Provider 後,未來不能任意更換或取消指定。 如果是學校長期使用,建議使用學校資訊組或學校專用的 Provider, 不要隨意放在個人或外部服務商的 Provider 底下。
2

取得 LINE Channel access token

約 2~5 分鐘完成
  1. 在 LINE Developers Console 中進入:
    https://developers.line.biz/en/ 
  2. Provider → Messaging API Channel → Messaging API
  3. 找到: Channel access token
  4. 依畫面選擇產生 Token 的方式。 如果使用具有期限的 Token,請注意未來需要在到期前更新。
  5. 複製產生的長串英文與數字,稍後填入 Apps Script。
LINE_ACCESS_TOKEN: '請貼上您自己的 LINE Channel access token'
絕對不要把 Token 放在:
  • 公開網頁的前端 JavaScript。
  • Google Blog 或公開簡報。
  • GitHub 或其他公開程式碼平台。
  • LINE 回覆訊息或網址參數中。
3

取得 Gemini API Key

約 3~5 分鐘完成
  1. 進入 Google AI Studio,使用 Google 帳號登入。
  2. 開啟 API Key 管理頁面,選擇: Create API key
  3. 如果系統要求選擇 Google Cloud Project, 請選擇您要使用的專案。
  4. 複製產生的 Gemini API Key。 常見的舊格式可能以 AIzaSy 開頭, 但請以目前 Google AI Studio 顯示的格式為準。
配額與計費提醒:
Gemini API 的可用模型、速率限制、免費配額與是否需要計費設定, 會依 Google 帳號、專案與當時政策而不同。 請以 Google AI Studio 與 Google Cloud 專案頁面顯示的資訊為準, 不要把「一定免費」或「不限額度」寫入正式教學。

建議保留多模型備援

為避免單一模型暫時忙碌、配額限制或模型下架, 可以在 CONFIG 中保留多個模型。 程式會依序嘗試,前一個失敗就換下一個。

GEMINI_MODELS: [ 'gemini-3.7-flash', 'gemini-3.6-flash', 'gemini-3.5-flash', 'gemini-3.1-flash-lite', 'gemini-2.5-flash', 'gemini-2.5-flash-lite' ]

實際可使用的模型請以 Google Gemini API 官方 Models 頁面或 Models API 回傳結果為準。 Preview 或已停止服務的模型,不建議放在正式環境的主要順位。

4

建立 Google 試算表知識庫

約 2 分鐘完成
  1. 開啟 Google 試算表,建立新的空白試算表。
  2. 建議將試算表命名為: 校園資訊組智慧小幫手知識庫
  3. 下方預設的「工作表1」可以先保留。 程式第一次執行初始化函式時,會自動建立知識庫工作表。
  4. 複製試算表網址中的純 ID。 試算表網址通常長這樣:
https://docs.google.com/spreadsheets/d/這一段就是試算表ID/edit

設定時建議填入純 ID:

SPREADSHEET_ID: '請貼上試算表ID'

不要包含:

/edit ?gid=123456789 #gid=123456789

程式會使用的工作表

工作表名稱 用途
資訊組AI小幫手知識庫 存放分類、標題、詳細內容、狀態與更新時間。
對話紀錄 記錄使用者問題、AI 回覆與必要的識別資訊。
初始化函式的重要提醒:
如果知識庫工作表已經有正式資料,請不要再次執行 initKnowledgeBaseSheet。 某些初始化版本會清除同名工作表,再重新建立範例資料。
5

建立 Apps Script,貼上 Code.gs 與 index.html

約 5~10 分鐘完成
  1. 在剛才建立的 Google 試算表上方選單點選:
    擴充功能 → Apps Script
  2. 進入 Apps Script 編輯器後, 將原本預設的 myFunction 刪除。
  3. 建立或使用預設的: Code.gs
  4. 將下方收闔選單中的完整後端程式碼複製到 Code.gs
  5. CONFIG 中填入自己的設定。

CONFIG 基本設定範例

const CONFIG = { SPREADSHEET_ID: '請貼上Google試算表ID', GEMINI_API_KEY: '請貼上Gemini API Key', LINE_ACCESS_TOKEN: '請貼上LINE Channel access token', ADMIN_PASSWORD: '請設定管理者密碼', GEMINI_MODELS: [ 'gemini-3.7-flash', 'gemini-3.6-flash', 'gemini-3.5-flash', 'gemini-3.1-flash-lite', 'gemini-2.5-flash', 'gemini-2.5-flash-lite' ], SHEET_NAME: '資訊組AI小幫手知識庫', LOG_SHEET_NAME: '對話紀錄' };
上方只是設定範例。請依照實際使用的完整程式碼與服務設定進行修改。
📄 展開/收起 Code.gs 後端程式碼

請展開後查看完整 Code.gs,按下「一鍵複製」即可複製全部內容。

完整的 Code.gs 程式碼,請一鍵複製貼上。
雙層登入設計:
VIEW_PASSWORD 只能登入查看; ADMIN_PASSWORD 才能新增、修改與刪除。 兩組密碼務必不同。

建立 index.html

  1. 在 Apps Script 左側檔案列表點選:
    + → HTML
  2. 檔案名稱輸入: index
    系統會自動建立 index.html
  3. 將下方收闔選單中的完整前端管理頁面複製到 index.html
  4. 按下儲存按鈕,先不要急著部署。
🌐 展開/收起 index.html 前端程式碼

請展開後查看完整 index.html,按下「一鍵複製」即可複製全部內容。

載入校園資訊知識庫中...

程式中應該具備的主要函式

函式 用途
doGet(e) 瀏覽器開啟管理網頁時,載入 index.html。
doPost(e) 接收 LINE Webhook 傳入的訊息事件。
testSpreadsheet() 測試 Apps Script 是否能連到 Google 試算表。
testSystem() 測試試算表、知識庫與 Gemini API。
initKnowledgeBaseSheet() 第一次使用時建立範例知識庫。
verifyLogin(password) 驗證檢視者或管理者登入密碼。
saveKnowledgeBaseEntry() 管理者新增或修改知識庫。
deleteKnowledgeBaseEntry() 管理者刪除知識庫資料。
6

測試系統、部署 Web App 並設定 LINE Webhook

約 8~15 分鐘完成

第一階段:先測試試算表連線

  1. 在 Apps Script 上方函式下拉選單選擇: testSpreadsheet
  2. 按下「執行」。
  3. 第一次執行時,依照 Google 授權畫面完成授權。 如果看到「進階」選項,請確認這是自己建立的專案後再繼續。
正常結果應包含:
試算表名稱、工作表名稱、Spreadsheet ID 與資料列數。

第二階段:第一次使用才初始化知識庫

  1. 如果知識庫工作表尚未建立, 才執行: initKnowledgeBaseSheet
  2. 回到 Google 試算表,確認出現:
    • 資訊組AI小幫手知識庫
    • 對話紀錄

第三階段:測試 Gemini 與知識庫

  1. 在函式下拉選單選擇: testSystem
  2. 按下「執行」。
  3. 查看 Apps Script 左側: 執行項目 或執行記錄。
試算表名稱:資訊組AI小幫手知識庫 工作表名稱:資訊組AI小幫手知識庫 啟用知識庫筆數:15 知識庫資料筆數:15 送給 Gemini 的知識庫字數:3489 Gemini 成功使用模型:gemini-3.1-flash-lite Gemini 回覆:......
如果顯示「GEMINI_MODELS 沒有設定」:
請檢查 CONFIG 是否真的有加入 GEMINI_MODELS: [...]

第四階段:部署 Apps Script Web App

  1. 點選 Apps Script 右上角:
    部署 → 新增部署作業
  2. 點擊左側齒輪或「選取類型」, 選擇: 網頁應用程式 Web app
  3. 設定如下:
項目 建議設定 說明
說明 v1 方便辨識部署版本。
執行身分 程式以擁有者權限讀取試算表並呼叫 API。
誰可以存取 所有人 Anyone LINE 伺服器必須能從外部連線到 Webhook。
為什麼要選「所有人」?
LINE 平台需要從外部將訊息 POST 到您的 Web App。 但這不等於公開 GAS 程式碼,也不等於公開 Google 試算表。 使用者能看到什麼,取決於您的 doGetdoPost 與管理頁面是否有正確驗證。
  1. 按下「部署」。
  2. 如果出現授權視窗,依畫面完成授權。
  3. 部署完成後,複製: Web app URL

正式 Web App 網址通常長這樣:

https://script.google.com/macros/s/部署ID/exec
請使用 /exec,不要使用 /dev。
/dev 是測試網址,通常只有具備腳本編輯權限的人可以使用。 LINE Webhook 應使用正式部署後的 /exec 網址。

第五階段:回到 LINE Developers 設定 Webhook

  1. 回到 LINE Developers Console:
    Provider → Messaging API Channel → Messaging API
  2. 找到: Webhook URL
  3. 貼上剛才複製的 Apps Script Web App URL。
  4. 按下: Verify
  5. 看到: Success
  6. 確認: Use webhook:ON

第六階段:關閉 LINE 內建自動回覆

如果沒有關閉 LINE 官方帳號的內建自動回覆, 使用者可能同時收到兩段訊息:

感謝您的訊息! 很抱歉,本帳號無法個別回覆用戶的訊息。 以及: Gemini AI 小幫手的實際回覆。

請確認以下設定:

四、加入好友並進行第一次測試

加入 LINE 官方帳號,開始測試

完成後即可讓學員實際操作
  1. 在 LINE Developers 的 Messaging API 頁面找到官方帳號 QR Code。
  2. 使用手機 LINE 掃描 QR Code,加入官方帳號。
  3. 在一對一聊天室傳送:
請問校園 Wi-Fi 怎麼設定?

或傳送:

生生用平板要如何借用?
正常情況:
Bot 會讀取知識庫中與問題相關的資料, 再由 Gemini 整理成親切、清楚的繁體中文回答。

群組測試方式

如果程式設定成群組內只有被提及時才回覆, 請使用包含小幫手稱呼的訊息,例如:

小幫手,請問校園 Wi-Fi 怎麼設定?

如果只是輸入一般文字而沒有提到小幫手, Bot 可能會刻意不回覆,以免干擾群組聊天。

更新程式後不需要重新掃碼:
只要仍然使用同一個 LINE 官方帳號與同一個 Messaging API Channel, 修改 GAS、更新部署版本或重新產生 Channel access token, 通常都不需要重新加入好友。

五、如何進入知識庫管理後台?

後台網址就是同一個 Web App URL。
也就是 LINE Webhook 使用的 /exec 網址。

例如:

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

將這個網址貼到瀏覽器開啟, 就會由 doGet() 載入 index.html 管理頁面。

登入方式 可以做什麼?
檢視密碼 登入、搜尋、查看知識庫;不能新增、修改、刪除。
管理者密碼 查看、新增、修改、刪除知識庫資料。
安全設計提醒:
不可以只在前端把「編輯」按鈕藏起來。 Code.gs 的新增、修改、刪除函式也必須再次驗證管理者密碼, 才能真正防止檢視者直接呼叫後端函式。

六、知識庫資料應該怎麼整理?

一筆知識庫資料建議只處理一個明確主題, 這樣 Gemini 比較容易找到最相關的答案。

分類 標題/業務項目 詳細內容與設定步驟 狀態
校園網路與帳號 教師 Wi-Fi 連線方式 1. 開啟 Wi-Fi。
2. 選擇教師專用基地台。
3. 輸入教師公務帳號。
4. 若仍無法連線,請提供設備與教室資訊。
啟用
平板與設備借用 生生用平板車借用流程 請於授課前幾天完成登記,領取時清點平板與配件, 使用後登出帳號並歸還充電。 啟用
知識庫撰寫原則:
  • 寫入學校真正採用的規定,不要直接照抄其他學校範例。
  • Wi-Fi 密碼、個資、帳號密碼不要直接放入公開知識庫。
  • 校內分機、系統網址與設備編號要確認是否適合讓所有使用者看到。
  • 如果資訊已經過期,請修改或將狀態改為「停用」。

七、常見問題與排除方式

問題 1:LINE 完全沒有回覆。
  • 確認 LINE Developers 的 Webhook URL 結尾是 /exec
  • 確認 Use webhook 已開啟。
  • 確認 LINE Channel access token 正確且沒有多餘空白。
  • 確認 Web App 部署版本是最新版本。
  • 到 Apps Script「執行項目」查看是否有錯誤。
問題 2:同時收到 LINE 內建訊息與 Gemini 回覆。

請到 LINE Official Account Manager 關閉:

  • 自動回應訊息。
  • 歡迎訊息。

Webhook 保持啟用即可。

問題 3:測試紀錄顯示「GEMINI_MODELS 沒有設定」。

請確認 CONFIG 內有設定多模型陣列:

GEMINI_MODELS: [ 'gemini-3.7-flash', 'gemini-3.6-flash', 'gemini-3.5-flash', 'gemini-3.1-flash-lite', 'gemini-2.5-flash', 'gemini-2.5-flash-lite' ]
問題 4:Bot 說知識庫沒有資料,但試算表明明有資料。

請檢查:

  • Apps Script 是否連到正確的 Spreadsheet ID。
  • SHEET_NAME 是否與下方工作表名稱完全相同。
  • 知識庫資料的狀態是否為「啟用」。
  • generateAiResponse_() 是否真的將分類、標題與內容組合後送給 Gemini。

正確的知識庫文字組合應該類似:

return ( '' + item.category + '\n' + '' + item.title + '\n' + '\n' + item.content );
問題 5:試算表的提問者欄位是一長串 ID。

LINE Webhook 原本提供的是 userId。 如果希望顯示 LINE 顯示名稱, 程式需要再呼叫 LINE Profile API 取得 displayName。 建議同時保留「提問者名稱」與「提問者 ID」, 因為顯示名稱可能會被使用者自行修改。

問題 6:修改程式後,LINE 還是使用舊版本。

修改 Code.gsindex.html 後,請重新部署新版本:

部署 → 管理部署作業 → 編輯原本的 Web App → 版本:新增版本 → 部署

通常不需要更換 Webhook URL, 也不需要重新掃描 QR Code。

八、實務建議

先從小範圍開始 先放入 10~20 筆最常被詢問的資料, 例如 Wi-Fi、帳號、平板、投影機與報修流程。
每筆資料保持單一主題 不要把 Wi-Fi、投影機、平板與研習全部塞在同一筆, 讓 AI 更容易找到正確答案。
建立更新制度 建議每學期或每學年檢查一次知識庫, 將過期規定改為停用或重新編修。
最重要的觀念:
AI 的回答品質,不只取決於 Gemini, 更取決於您提供的校內知識是否正確、清楚、最新。 知識庫整理得越好,Bot 越像一位真正熟悉學校業務的資訊組長。
首頁選單:
可以在Line Office Account的主頁,左側聊天室相關,找到圖文選單,上傳圖片,功能設定成文字,就可以建立一個簡單的首頁選單。Bot 會越加人性化一點。

沒有留言:

張貼留言

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