【實作案例】透過Apps Script將Email 訂單資料自動新增至Google Sheet

需求:當收到固定格式的訂單通知 email 後,自動將資料填寫入 Google Sheet 表單當中。 實作方式:Google Apps Script ( 由Claude Sonnet4 提供程式碼)

【實作案例】透過Apps Script將Email 訂單資料自動新增至Google Sheet
提供給一樣不會寫 Code 但清楚流程、想透過自動化節省時間的人參考。

Overview

需求:當收到固定格式的訂單通知 email 後,自動將資料填寫入 Google Sheet 表單當中。

實作方式:Google Apps Script ( 由Claude Sonnet4 提供程式碼)

前提

  • 我先前有設定過其他 Apps Script,知道怎麼新增 Script 檔案、手動觸發 function、設定定時器Trigger。
  • 已授權App Script完整權限 (Gmail、Google Sheet 都是我的帳號)
  • Email 通知已在正常運作且結構固定。
  • Google Sheet 工作表欄位固定。

實際花費時間:約2–3小時(包含討論需求、下Prompt、測試與除錯)

費用:免費。

  • Gmail API 配額:
    - 每日配額:10億個配額單位
    - 每用戶每秒:250個配額單位
    - 搜尋email:每次約8個單位
    - 讀取email:每次約5個單位
  • App Script 限制(免費gmail帳號)
    - 執行時間每次6分鐘
    - 每日執行時間總計6小時
    - 觸發器數量20個
    - 電子郵件配額每日100封

流程

1. 每1小時自動檢查一次 gmail 信箱是否有新的訂單通知。搜尋條件:

  • 1. 信件主旨有固定格式,例如:開頭固定為 “訂單編號:”
  • 2. 信件寄件人為特定對象
  • 3. 信件上沒有指定的 gmail 標籤,例如:”AppsScript已自動處理”

2. 如沒有找到新的訂單,則結束執行。 如果有找到訂單通知,考慮可能不止1筆資料的狀況,逐筆處理資料。

3. 解析 email 內容,抓取待會要儲存或拿來運用的資料值,例如: 訂單編號、商店名稱、顧客姓名、聯絡電話 etc.

4. 在 Google Sheet 指定工作表中,新增一列。

5. 將解析內容與預設值填入工作表中。

6. 執行完成後,將 email 貼上指定的 gmail 標籤,例如:”AppsScript已自動處理”。

7. 處理下一筆資料(假如有) ,直到全部處理完畢後停止。


Best Practice / Lesson Learned

  • 永遠先用少量測試資料驗證功能,再啟用自動觸發器。例如我設定了一個參數可以手動設定email 日期範圍。
  • 可以在程式碼最上方新增一個設定區域,用於處理重要但不常變動的參數設定,例如:工作表名稱、檔案連結、email 篩選條件、填入工作表的部分欄位預設值。
  • 將可能需要由其他使用者變動的值放在在 Google Sheet 的指定工作表中,例如專門有”設定” 用的工作表。確保使用者知道如何維護。
  • 設定 Log 與防止錯誤的機制,方便除錯,避免資料遺失、重複、覆蓋、或錯誤填寫。
  • 設定一個 test 函數,可以手動觸發來檢查設定與資料解析結果是否正確。
  • email 內容格式解析會花比較多時間試錯,盡可能提供真實案例和結果給 AI 除錯,也要提醒 AI 不要把程式邏輯變得太複雜。
  • 將觸發條件透過 App Script 設定而不是程式碼。
  • Gmail 的標籤可以透過程式,設計為若原本 gmail 中不存在該標籤則自動新增。

最後請Claude 整理 Prompt Template 可用於下一次的開發:

我需要開發一個Google Apps Script自動化應用: 
 
【核心目標】 
當 [觸發條件] 時,自動執行 [處理動作] 
 
【技術環境】 
- 資料來源:[Gmail/Google Sheets/Drive/其他] 
- 輸出目標:[Google Sheets/Gmail/其他] 
- 觸發頻率:[每X分鐘/小時] 
 
【篩選條件】 
- [條件1,如:特定寄件人] 
- [條件2,如:主旨格式] 
- [條件3,如:時間範圍] 
- 防重複:[Gmail標籤/其他標記方式] 
 
【處理流程】 
1. [步驟1] 
2. [步驟2]   
3. 逐筆處理資料:解析→驗證→寫入→標記 
4. [其他步驟] 
 
【資料處理】 
輸入格式範例: [輸入真實資料] 
 
需解析欄位:[欄位1, 欄位2, 欄位3...] 
輸出位置:[具體Sheet名稱和位置] 
預設值:[欄位A=值1, 欄位B=值2...] 
 
【設定管理】 
- 固定設定:[檔案ID, 工作表名稱, 篩選條件等] 
- 可變設定:[放在Google Sheet中的參數] 
 
【要求】 
- 包含CONFIG設定區域 
- 提供test函數驗證設定 
- 詳細console.log除錯 
- 批次處理避免API限制 
- 完整錯誤處理機制 
 
請提供完整程式碼實作。

如果你有什麼有趣的案例、想嘗試的情境、或實作上卡關的地方,歡迎和我分享。