首頁/AI 講義/數位工具・自動化

數位工具・自動化 · Workspace+GAS+Gemini約 12 分鐘Automation

GAS×Gemini 表單自動歸檔到雲端硬碟

GAS×Gemini 表單自動歸檔到雲端硬碟 — 賴家榮 AI 教學

Overview這一課你會做出什麼

你會做出一套自動歸檔系統:使用者填完 Google 表單送出後,Gemini 自動判斷這筆回覆屬於哪一類,Apps Script 就在雲端硬碟建立對應資料夾,並把內容存成 Google 文件歸檔,完全不用人工分類。

Key Takeaways

  • 用 Google 表單收件,送出即觸發程式,不必手動點按
  • 呼叫 Gemini API,讓 AI 讀懂回覆內容並判斷歸屬類別
  • 用 DriveApp 自動建立或找出對應資料夾,避免重複建立
  • 用 DocumentApp 把每筆回覆存成一份格式清楚的 Google 文件
  • 金鑰放在 PropertiesService,不寫死在程式裡,安全又好維護
  • 設定「表單提交」觸發器,整個流程全自動運作

這套流程特別適合客服單、報名表、意見回饋這種每天都會進來、又需要分類存檔的場景。學會之後,你可以把「收件、判斷、建資料夾、存檔」這串重複動作,完全交給 Google 的伺服器自動幫你跑。

Why先看情境:這解決什麼問題

想像你經營一個小工作室,官網放了一張 Google 表單讓客戶提出需求。有人問報價、有人要技術支援、有人只是想合作洽談。過去你得每天打開試算表,一筆一筆看內容,判斷這是哪一類,再手動把它拖進雲端硬碟對應的資料夾。件數一多,不但花時間,還常常分錯或忘記歸檔。

有了 GAS 加上 Gemini,這件事可以完全自動化。表單一送出,程式立刻把回覆內容丟給 Gemini 判斷類別,接著自動在雲端硬碟找到(或建立)對應的資料夾,再把這筆回覆存成一份文件放進去。你早上打開雲端硬碟,所有東西都已經分門別類排好,只要處理內容本身就好,省下大量重複勞動。

Prepare動手前準備

Checklist

  • 一個可正常使用的 Google 帳號(免費版即可)
  • 一組 Gemini API 金鑰:到 ai.google.dev 登入後建立,複製字串備用
  • 一份 Google 表單,至少包含「姓名」與「需求描述」兩個問題
  • 表單已連結到一份 Google 試算表(在表單的「回覆」分頁點試算表圖示)
  • 在雲端硬碟先想好一個「歸檔總資料夾」的名稱,例如「表單歸檔」

Steps一步一步實作

1打開表單的指令碼編輯器

動作在 Google 表單編輯畫面右上角點三個點選單,選「指令碼編輯器」,會開啟一個空白的 Apps Script 專案。

常見地雷要從「表單」本身進入,不要從試算表進入,這樣才能綁定表單提交事件。

2設定 Gemini 金鑰到屬性服務

動作左側點齒輪「專案設定」,捲到最下方「指令碼屬性」,新增一組屬性:名稱填 GEMINI_API_KEY,值貼上你的金鑰。

常見地雷金鑰前後不要有多餘空白,貼完記得按「儲存指令碼屬性」,否則程式讀不到。

3貼上 askGemini 共用函式

動作在編輯區把預設的 myFunction 刪掉,貼上本文提供的 askGemini 函式,它負責呼叫 Gemini API 並回傳文字。

常見地雷網址中的模型名稱 gemini-2.5-flash 不要改錯,末尾 key 參數要保留。

4撰寫主流程函式

動作接著貼上 onFormSubmit 主函式,它會取出回覆內容、請 Gemini 判斷類別、建立資料夾並存檔。

常見地雷函式參數 e 是事件物件,測試時不能直接手動執行,要透過觸發器或模擬事件。

5第一次授權

動作在上方函式選單選 onFormSubmit,按「執行」,跳出授權視窗時選你的帳號,點「進階」再允許存取。

常見地雷會出現「Google 尚未驗證這個應用程式」警告,這是自己的專案屬正常,放心往下點允許。

6建立表單提交觸發器

動作左側點鬧鐘圖示「觸發條件」,右下角「新增觸發條件」,函式選 onFormSubmit,事件來源選「來自表單」,事件類型選「表單提交時」。

常見地雷事件來源一定要選「來自表單」,選錯成「時間驅動」就不會在送出時觸發。

7實際填一次表單測試

動作打開表單填一筆真實內容送出,回到雲端硬碟檢查是否自動建立資料夾,並產生一份歸檔文件。

常見地雷若沒反應,先到 Apps Script 左側「執行項目」看紀錄,通常是金鑰或授權問題。

下面兩段程式碼是整套流程的核心。第一段 askGemini 是共用的 AI 呼叫函式,之後每一課都會用到,請原樣照抄;第二段 onFormSubmit 是本課的主流程,負責串起判斷、建資料夾與存檔。

function askGemini(prompt) {
  const key = PropertiesService.getScriptProperties().getProperty('GEMINI_API_KEY');
  const url = 'https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent?key=' + key;
  const payload = { contents: [{ parts: [{ text: prompt }] }] };
  const res = UrlFetchApp.fetch(url, { method:'post', contentType:'application/json', payload: JSON.stringify(payload), muteHttpExceptions:true });
  return JSON.parse(res.getContentText()).candidates[0].content.parts[0].text.trim();
}
function onFormSubmit(e) {
  // 1. 取出表單回覆的問答內容
  const items = e.response.getItemResponses();
  let content = '';
  items.forEach(function(it) {
    content += it.getItem().getTitle() + ':' + it.getResponse() + '\n';
  });

  // 2. 請 Gemini 判斷類別,限定只回傳一個詞
  const prompt = '請閱讀以下表單回覆,判斷它屬於哪一類,只回覆下列其中一個詞,不要多餘說明:報價需求、技術支援、合作洽談、其他。\n\n' + content;
  let category = askGemini(prompt);
  const allow = ['報價需求','技術支援','合作洽談','其他'];
  if (allow.indexOf(category) === -1) category = '其他';

  // 3. 找到或建立歸檔總資料夾與類別子資料夾
  const root = getOrCreateFolder(DriveApp.getRootFolder(), '表單歸檔');
  const target = getOrCreateFolder(root, category);

  // 4. 把這筆回覆存成一份 Google 文件
  const title = category + '_' + Utilities.formatDate(new Date(), 'Asia/Taipei', 'yyyyMMdd_HHmmss');
  const doc = DocumentApp.create(title);
  doc.getBody().appendParagraph('類別:' + category);
  doc.getBody().appendParagraph('送出時間:' + new Date());
  doc.getBody().appendParagraph('----------');
  doc.getBody().appendParagraph(content);
  doc.saveAndClose();

  // 5. 把文件搬進對應資料夾
  const file = DriveApp.getFileById(doc.getId());
  target.addFile(file);
  DriveApp.getRootFolder().removeFile(file);
}

// 依名稱找資料夾,找不到就建立
function getOrCreateFolder(parent, name) {
  const it = parent.getFoldersByName(name);
  return it.hasNext() ? it.next() : parent.createFolder(name);
}

Flow一張圖看懂流程

表單自動歸檔流程
1使用者填寫並送出 Google 表單
2表單提交觸發器啟動 onFormSubmit
3程式整理出回覆的問答文字
4呼叫 Gemini 判斷類別(報價/技術/合作/其他)
5用 DriveApp 找到或建立對應資料夾
6用 DocumentApp 把回覆存成 Google 文件
7把文件搬進類別資料夾完成歸檔

用文字描述就是:表單送出後觸發程式,程式先把所有問答整理成一段文字,交給 Gemini 判斷屬於哪一類;接著在雲端硬碟的「表單歸檔」總資料夾底下,找到或新建同名的類別子資料夾;最後把這筆回覆寫成一份 Google 文件,搬進該子資料夾,整個過程不需要任何人工操作。

Tips常見錯誤與優化

FAQ常見問題 Q&A

常見問題 FAQ

Gemini API 金鑰要去哪裡申請?會不會很麻煩?

到 ai.google.dev 用 Google 帳號登入,點「Get API key」建立一組金鑰,複製那串英數字即可,過程不用綁信用卡,免費額度就足夠測試與小量使用。拿到後貼到 Apps Script 的「專案設定」裡的「指令碼屬性」,名稱設 GEMINI_API_KEY,這樣程式就能安全讀取,不必把金鑰直接寫在程式碼中。

為什麼要把金鑰放在屬性服務,不能直接寫在程式裡嗎?

技術上可以,但很不安全。程式碼可能被分享、複製或不小心公開,金鑰一旦外洩,別人就能用你的額度甚至產生費用。放在 PropertiesService 裡,金鑰與程式邏輯分開,換金鑰時只要改設定不用動程式,也方便日後把程式分享給同事而不外流機密,是官方建議的正確做法。

觸發器設定好了,但填表送出後完全沒反應怎麼辦?

先到 Apps Script 左側的「執行項目」查看有沒有執行紀錄與錯誤訊息。最常見原因有三個:一是金鑰沒設定或多了空白,二是第一次沒完成授權,三是觸發器事件來源選錯成時間驅動而非表單。逐一檢查這三點,並手動再填一次表單測試,通常就能找出問題所在。

Gemini 有時候回傳的類別不在我設定的清單裡怎麼辦?

這正是為什麼程式裡要加一層白名單過濾。就算提示詞已經限定選項,AI 偶爾還是會多加標點或說明。程式收到回覆後,用陣列檢查它是否在允許清單中,不在就一律歸到「其他」。這樣即使 AI 回答不如預期,資料夾名稱也不會亂掉,整個流程仍然穩定運作。

一筆回覆會不會被存到多個資料夾,造成重複?

不會。程式對每一筆提交只判斷一次類別、只建立或取用一個對應資料夾、只產生一份文件,並用 addFile 搬進去後立刻從根目錄移除。只要不重複觸發同一個事件,就是一進一出,一筆對一份文件,不會出現重複歸檔的情況。

表單問題很多、內容很長,會影響判斷準確度嗎?

影響不大。程式會把所有問答整理成一段完整文字再交給 Gemini,內容越完整,AI 判斷反而越準。若題目特別多,可以在提示詞裡明確指出「主要依據需求描述欄位判斷」,引導 AI 聚焦在關鍵欄位,避免被次要資訊干擾,判斷結果會更貼近你的預期。

這套流程有使用次數或費用上的限制嗎?

有兩個層面。Gemini API 免費方案有每分鐘與每日的呼叫上限,小型表單通常用不完;Apps Script 也有每日執行時間與 UrlFetchApp 呼叫次數配額,個人帳號額度相當充裕。若表單量很大,建議改成批次處理,每小時一次把累積的回覆一起判斷歸檔,就能大幅降低呼叫次數。

我想改成存到共用雲端硬碟(團隊硬碟),程式要怎麼調整?

可以,但根資料夾的取得方式要改。共用雲端硬碟不是用 getRootFolder,而是先用 DriveApp.getFolderById 指定那個團隊資料夾的 ID(從網址列複製),再以它為 parent 呼叫 getOrCreateFolder。另外要確認執行程式的帳號對該共用硬碟有編輯權限,否則建立資料夾與搬檔會失敗。

可以不要存成 Google 文件,改存成純文字檔嗎?

可以。把 DocumentApp 那段改成用 DriveApp.createFile 建立純文字檔即可,例如傳入檔名、內容與 MimeType 為純文字。純文字檔容量小、建立快,但缺點是沒有標題樣式與排版。如果只是留存記錄,純文字很夠用;若日後要人閱讀或加註解,Google 文件會比較方便。

如果我想在歸檔的同時,自動寄一封通知信給自己,可行嗎?

完全可行,而且很簡單。在主流程存檔完成後,加一行 GmailApp.sendEmail,把收件者設成自己的信箱,主旨帶入類別與時間,內文附上文件連結(用 doc.getUrl 取得)。這樣每次有新回覆歸檔,你的信箱就收到一封通知,不必一直開著雲端硬碟等,也能第一時間掌握進件狀況。

CTA下一步

把「收件、判斷、建資料夾、存檔」交給流程自動完成後,你每天省下的不只是時間,更是那種「別漏掉、別分錯」的心理負擔。這只是 Workspace 自動化的起點,接下來你可以把行事曆、Gmail、試算表全部串起來,打造屬於團隊的 AI 助理。

想讓團隊用 AI+自動化把重複工作交給流程?賴家榮提供 Workspace/GAS/Gemini 企業內訓與大學課程。

預約授課・免費諮詢

本文為賴家榮 AI 教學中心原創教學內容;想讓團隊學會用 AI,歡迎看AI 課程或預約授課 →

代表圖片來源:圖片來源:Pexels

Your turn

把 AI,變成團隊真的用得上的能力。

不論你在哪個產業,賴家榮都能帶團隊把 AI 學到真的用得上。

預約授課・免費諮詢