新北研習|第二堂進階實作

第二堂進階實作|把活動資料變成可追蹤的行政工作流

從一筆活動建案開始,建立資料夾、任務表、通知草稿、風險提醒與成果檢核。

這一頁給已完成基礎版操作的學員使用。重點不是學會寫 API,也不是追求全自動,而是理解如何把活動資料整理成一套可複製、可追蹤、可交接的 Google Workspace 工作流。Gemini API 僅保留為最後的進階選配。

學員操作導向 活動專案中樞 提示詞草稿輔助 承辦人確認

一、這一頁要完成什麼

你會做出一套可以自己帶走修改的活動管理流程。完成後,你應該能從一筆活動資料出發,整理出可追蹤、可回顧、可交接的行政專案資料包。

活動建案表

集中活動名稱、日期、地點、對象、承辦人、經費、交通與成果需求。

活動專案資料夾

用固定資料夾收公文、計畫、通知、表單、照片、成果與檢討資料。

專案記錄文件

保存活動背景、重要決定、待確認事項與承辦交接摘要。

待辦追蹤表

整理任務、負責人、期限、狀態、提醒與追蹤紀錄。

成果檢核表

活動前先定義活動後要收哪些成果,避免結案時資料散落。

可選草稿

通知單、導師提醒、風險檢查表都只是草稿,最後仍由承辦人修正使用。

學員提醒:請先完成基礎版的一筆活動資料包,再看這一頁。進階版不是從空白 Sheet 開始,而是延伸成多活動可管理的工作方式。

二、先理解:活動行政不是只有建立資料夾

建立資料夾只是第一步。真正有用的行政工作流,應該能把收案、分工、追蹤、通知、回報、成果整理與下次交接串起來。

行政階段工作流要留下什麼學員要確認什麼
收案活動建案表、原始公文、附件與基本資料。活動日期、對象、經費、承辦窗口是否清楚。
分工待辦追蹤表、主責人、協作人員與期限。每件任務是否有人負責,期限是否合理。
追蹤任務狀態、提醒節點與待確認事項。哪些任務卡住,哪些需要主管或跨處室確認。
通知家長通知、導師提醒、校內公告與寄送紀錄。正式內容是否核定,敏感資訊是否正確。
回報活動照片、簽到、回饋、成果資料與問題紀錄。成果資料是否足以支撐報告與交接。
成果整理成果檢核表、NotebookLM / Gemini 可用資料包與結案摘要。哪些資料可上傳、哪些資料要去識別化。
下次交接承辦交接摘要、下次辦理建議與流程修正紀錄。下一位承辦人是否能接著做。
工作流負責把行政流程固定下來;AI 只協助產生草稿與提醒缺漏,最後仍由承辦人確認。

三、學員操作流程

請依序操作,不要一開始就跳到 API。一般學員先用提示詞模式就足夠,不需要 API key。

  1. 複製已綁定 Apps Script 的 Google Sheet 範本。
  2. 開啟副本並完成授權。
  3. 從選單建立活動專案中樞。
  4. 填寫或匯入活動建案資料。
  5. 一鍵產生專案資料包。
  6. 檢查待辦追蹤表與成果檢核表。
  7. 使用提示詞產生通知單、導師提醒或風險檢查草稿。
  8. 由承辦人修正、核定後,才正式使用文件。
學員提醒:請先複製範本,不要從空白 Sheet 開始。範本已經綁定 Apps Script,才能從同一份 Sheet 建立活動專案資料包。
複製活動專案管理中樞 Sheet 範本 ↓ 開啟副本並授權 ↓ 填寫活動建案資料 ↓ 建立專案資料夾、專案記錄文件、待辦追蹤表、成果檢核表 ↓ 使用提示詞產生通知或檢查草稿 ↓ 承辦人修正與正式使用 ↓ 整理成果資料包,供 NotebookLM / Gemini 回顧與結案使用

四、基礎版與進階版差異

比較項目基礎版進階版
適用情境單一活動,理解流程。多活動集中管理,適合長期承辦與交接。
學習重點知道活動如何形成資料夾、文件、表格與提醒。知道多筆活動如何收案、追蹤、結案與累積組織記憶。
主要產物一組活動資料包。活動清單、活動建案表、批次資料包、追蹤欄位與交接資料。
承辦價值能把一場活動辦理資料整理完整。能讓多場活動用同一套方式管理,下一位承辦人也看得懂。
AI 使用可不用,也可用提示詞產生草稿。仍以工作流為主;提示詞與 API 都只是輔助,不是差異重點。

五、三種使用層次

層次一:不使用 AI

只建立標準化工作流。你仍可以完成活動建案、資料夾、待辦追蹤、成果檢核與交接。

層次二:使用提示詞

用 Gemini 或 ChatGPT 產生通知單、導師提醒、風險檢查草稿,再由承辦人修正。

層次三:進階 API 串接

僅供能處理金鑰、權限、錯誤與資料安全者使用。一般學員不需要完成這一層。

進階選配:API 串接放在本頁最後。沒有完成 API,不影響本堂課學習成果。

六、進階中樞會產生什麼

進階中樞先建立活動專案必備的主資料夾、標準子資料夾與三個核心文件,再把 NotebookLM / Gemini 定位為成果整理與文件回顧工具。

活動型行政專案資料夾 ├─ 01_專案記錄 Docs - 活動/專案名稱 ├─ 02_待辦追蹤表 Sheet - 活動/專案名稱 ├─ 03_成果檢核表 Sheet - 活動/專案名稱 ├─ 00_原始公文與附件 ├─ 01_計畫書與核定資料 ├─ 02_工作分工與會議紀錄 ├─ 03_表單與回覆資料 ├─ 04_通知與聯繫資料 ├─ 05_經費與採購核銷資料 ├─ 06_活動照片與照片說明 ├─ 07_成果資料與成果報告 ├─ 08_簡報與成果展示 ├─ 09_檢討與下次改進 └─ 99_系統產生文件 └─ 活動建案摘要、WBS任務清單、風險檢查表、NotebookLM資料包、承辦人交接摘要、工作流驗收建議
三個核心文件是基礎必備產物,必須放在專案主資料夾根目錄。通知草稿、導師提醒、風險檢查、NotebookLM 資料包屬於輔助產物。

七、可選用的草稿輔助提示詞

以下提示詞可以保留給學員使用,但每一份輸出都只是初稿。請先檢查資料是否可貼給外部工具,再由承辦人修正與核定。

行政判斷:收費、保險、交通與學生安全不得只依賴草稿。正式內容必須依校內程序確認。

活動建案檢查提示詞

活動建案檢查提示詞
請根據以下活動建案資料,協助我檢查這筆活動是否已具備可進入行政專案管理的基本資訊。

請用表格回答:
1. 目前已經清楚的資訊
2. 目前仍待確認的資訊
3. 最優先要確認的 5 件事
4. 可能造成行政風險的缺漏
5. 建議建立哪些 Google Workspace 文件、表單、資料夾或提醒

請注意:
- 不要自行編造不存在的日期、金額、地點或人員。
- 涉及學生個資、收費、保險、交通與安全者,請標示「待承辦人確認」。

活動建案資料:
(貼上活動名稱、日期、地點、參與對象、交通、保險、費用、承辦人、協辦人員等資料)

工作拆解輔助提示詞

工作拆解輔助提示詞
請根據以下活動資料,協助我建立 WBS 工作拆解初稿。

請分成:
1. 活動規劃
2. 行政核准
3. 家長通知
4. 學生名冊
5. 交通與安全
6. 經費與核銷
7. 活動當天執行
8. 成果整理與結案

每一項請包含:
- 工作包名稱
- 具體任務
- 建議負責角色
- 建議完成時間
- 需要的文件或表單
- 是否需要 Calendar 提醒
- 哪些欄位需要承辦人確認

活動資料:
(貼上活動建案資料)

通知單草稿輔助提示詞

通知單草稿輔助提示詞
請根據以下活動資料,產出一份給家長的活動通知單草稿。

請注意:
1. 語氣正式、清楚、親切。
2. 日期、費用、集合時間若資料不足,請用【待確認】標示。
3. 涉及收費、保險、交通、安全者,請提醒承辦人正式確認。
4. 不要自行編造不存在的資料。
5. 請使用繁體中文。
6. 最後加上「承辦人確認事項」。

活動資料:
(貼上活動建案資料)

導師提醒草稿輔助提示詞

導師提醒草稿輔助提示詞
請根據以下活動資料,產出一份給導師的行前提醒草稿。

請分成:
1. 活動前一週
2. 活動前一天
3. 活動當天集合前
4. 活動進行中
5. 返校後

每一階段請列出導師需要提醒學生、檢查名冊、確認安全與回報的事項。
請使用清楚、條列、方便轉貼到校內群組的格式。
涉及學生安全、交通、保險、收費或正式公告內容,請標示「待承辦人確認」。

活動資料:
(貼上活動建案資料)

風險檢查輔助提示詞

風險檢查輔助提示詞
請根據以下活動資料,協助我列出活動風險檢查初稿。

請分成:
1. 時程風險
2. 人員風險
3. 學生安全風險
4. 交通風險
5. 家長溝通風險
6. 經費核銷風險
7. 成果結案風險

每一項請列出:
- 風險內容
- 可能造成的問題
- 建議預防方式
- 建議新增的表單欄位
- 是否需要 Calendar 提醒
- 必須由承辦人確認的事項

活動資料:
(貼上活動建案資料)

八、成果整理與資料包

NotebookLM / Gemini 可以作為成果整理與文件回顧工具,協助你把公文、附件、會議紀錄、照片說明與成果資料整理成可詢問的專案知識庫。

工作流完整性檢查提示詞
以下是我建立的活動行政工作流。請協助我檢查它是否足以支撐一場國小活動的收案、分工、追蹤、通知、成果整理與交接。

請用表格回答:
1. 已經完整的部分
2. 可能缺漏的部分
3. 哪些缺漏會造成行政風險
4. 建議新增的表單欄位
5. 建議新增的文件範本
6. 建議新增的 Calendar 提醒
7. 哪些部分不能交給 AI,必須由承辦人確認

工作流資料如下:
(貼上表單欄位、資料夾架構、文件清單、提醒節點)
學員提醒:整理資料包前,請先移除不該送出的個資,或改用去識別化摘要。

九、這些事情不能交給 AI 決定

重點是把行政流程標準化,不是把責任交給 AI。以下事項必須由承辦人、主管或校內正式程序確認。

不能交給 AI 決定的事項為什麼必須由人確認
學生個資是否可以送出涉及個資保護、資料最小化與校內資料使用規範。
收費金額是否正確涉及家長權益、會計與核銷責任。
保險資料是否完整涉及學生安全與活動風險承擔。
交通安全是否符合規定涉及車輛、路線、集合、返校與緊急應變安排。
家長通知是否經正式核定正式通知代表學校立場,不能只用草稿直接發出。
活動風險是否已由承辦人確認工具只能提醒缺漏,實際風險要依學校現場判斷。
成果報告是否符合學校或主管機關要求不同計畫、補助或主管機關要求不同,需承辦人核對。
行政判斷:每一份草稿都要經過承辦人確認。AI 可以協助整理文字、列出缺漏、提醒風險,但不能替代行政責任。

十、附錄:進階使用者才需要看的 Gemini API 串接

進階選配:一般學員不需要完成這一段,也不影響本堂課學習成果。只有在能妥善處理 API key、權限、錯誤、費用與資料安全時,才建議進一步測試。

以下範例示範從活動建案表讀取資料,呼叫 Gemini API,產生通知單草稿與風險檢查草稿。請注意:程式產出的內容仍是草稿,不可直接視為正式文件。

callGemini_ 函式

JavaScript|callGemini_
function callGemini_(prompt) {
  const apiKey = PropertiesService
    .getScriptProperties()
    .getProperty('GEMINI_API_KEY');

  if (!apiKey) {
    throw new Error('尚未設定 GEMINI_API_KEY');
  }

  const model = 'gemini-2.5-flash';
  const url = 'https://generativelanguage.googleapis.com/v1beta/models/'
    + model
    + ':generateContent?key='
    + apiKey;

  const payload = {
    contents: [
      {
        parts: [
          { text: prompt }
        ]
      }
    ]
  };

  const options = {
    method: 'post',
    contentType: 'application/json',
    payload: JSON.stringify(payload),
    muteHttpExceptions: true
  };

  const response = UrlFetchApp.fetch(url, options);
  const text = response.getContentText();
  const data = JSON.parse(text);

  if (!data.candidates || !data.candidates.length) {
    throw new Error('Gemini API 未回傳有效內容:' + text);
  }

  return data.candidates[0].content.parts
    .map(part => part.text || '')
    .join('\n');
}

buildActivityPrompt_ 函式

JavaScript|buildActivityPrompt_
function buildActivityPrompt_() {
  const sheet = SpreadsheetApp.getActive().getSheetByName('活動建案表');
  const values = sheet.getDataRange().getValues();

  const lines = values.map(row => {
    const field = row[0];
    const value = row[1];
    return field + ':' + value;
  });

  return lines.join('\n');
}

generateParentNoticeDraft 函式

JavaScript|generateParentNoticeDraft
function generateParentNoticeDraft() {
  const activityData = buildActivityPrompt_();

  const prompt = `
請根據以下活動資料,產出一份給家長的活動通知單草稿。

請注意:
1. 語氣正式、清楚、親切。
2. 日期、費用、集合時間若不足,請用【待確認】標示。
3. 涉及收費、保險、交通、安全者,請提醒承辦人正式確認。
4. 不要自行編造不存在的資料。
5. 請使用繁體中文。
6. 最後加上「承辦人確認事項」。

活動資料:
${activityData}
`;

  const result = callGemini_(prompt);
  const doc = DocumentApp.create('家長通知單草稿|待承辦人確認');
  doc.getBody().appendParagraph(result);

  SpreadsheetApp.getUi().alert('已產生通知單草稿,請承辦人確認後再使用:' + doc.getUrl());
}

generateRiskCheckDraft 函式

JavaScript|generateRiskCheckDraft
function generateRiskCheckDraft() {
  const activityData = buildActivityPrompt_();

  const prompt = `
請根據以下活動資料,產出風險檢查草稿。
請只回傳 JSON 陣列,不要加上 markdown,不要加說明文字。

JSON 格式如下:
[
  {
    "category": "時程風險",
    "risk": "風險內容",
    "impact": "可能造成的問題",
    "action": "建議預防方式",
    "field": "建議新增欄位",
    "calendar": "是否需要提醒",
    "humanCheck": "必須由承辦人確認的事項"
  }
]

活動資料:
${activityData}
`;

  const result = callGemini_(prompt);
  const risks = JSON.parse(result);

  const ss = SpreadsheetApp.getActive();
  let sheet = ss.getSheetByName('風險檢查草稿');
  if (!sheet) {
    sheet = ss.insertSheet('風險檢查草稿');
  }

  sheet.clear();
  sheet.appendRow([
    '類別',
    '風險內容',
    '可能問題',
    '建議預防方式',
    '建議新增欄位',
    '是否需要提醒',
    '承辦人確認事項'
  ]);

  risks.forEach(item => {
    sheet.appendRow([
      item.category,
      item.risk,
      item.impact,
      item.action,
      item.field,
      item.calendar,
      item.humanCheck
    ]);
  });
}
安全提醒:API key 不應寫死在公開程式碼,不應截圖分享,也不應交給不需要的人。涉及學生個資、健康資料、收費、保險與交通安全時,請優先使用去識別化資料或不送出資料。