Google Apps Script 定時觸發器管理與最佳實踐|ScriptApp

更新 發佈閱讀 5 分鐘

副標:每天凌晨自動刷新資料、定期推送訊息,還能避免重複觸發的完整範例。


問題背景與需求

  • 目標: 每天凌晨自動更新台鐵站名對照表。 定時(每分鐘)自動推送訊息。 每天定時清理會員到期狀態。 避免因多次部署而產生重複觸發器。
  • 限制: 使用 ScriptApp 內建觸發器 API。 時區需對應 Asia/Taipei。 Google Apps Script 免費版的觸發間隔限制。
  • 輸出:一段可直接貼上專案的初始化程式碼。

💡 為什麼我會做這個? 我在開發台鐵查詢與 LINE Bot 整合服務時,需要每日更新站名資料表,也要定期推送使用者訂閱的通知。由於專案常常重新部署,若不清除舊觸發器,會造成同一事件被執行多次,增加 API 成本與錯誤風險。


架構與流程

初始化腳本(initTriggers)
├─ 清除所有舊觸發器
├─ 建立每日 03:15 更新站名的觸發器
├─ 建立每分鐘推送訊息的觸發器
├─ 清除舊的 memberExpireSweep 觸發器
└─ 建立每日 03:10 清理會員的觸發器

環境與版本

  • OS:不限(雲端執行)
  • Runtime:Google Apps Script(V8)
  • 主要物件:ScriptApp
  • API 限制:免費版每分鐘觸發最小間隔為 1 分鐘

步驟實作

檔案與路徑/init/triggers.gs

function initTriggers() {
// 1. 清除所有舊觸發器(避免重複)
ScriptApp.getProjectTriggers().forEach(t => ScriptApp.deleteTrigger(t));

// 2. 每日 03:15 刷新站名對照表
ScriptApp.newTrigger('refreshStationMap')
.timeBased()
.atHour(3).nearMinute(15) // 時區以專案設定為準(Asia/Taipei)
.everyDays(1)
.create();

// 3. 每分鐘推送訊息(免費版可用)
ScriptApp.newTrigger('autoPushMessage')
.timeBased()
.everyMinutes(1)
.create();

// 4. 先清掉同名舊觸發(只針對 memberExpireSweep)
ScriptApp.getProjectTriggers()
.filter(t => t.getHandlerFunction() === 'memberExpireSweep')
.forEach(t => ScriptApp.deleteTrigger(t));

// 5. 建立每天 03:10 清理會員的觸發器
ScriptApp.newTrigger('memberExpireSweep')
.timeBased()
.atHour(3).nearMinute(10)
.everyDays(1)
.inTimezone('Asia/Taipei')
.create();
}

驗證與結果

  1. 在 GAS 編輯器中執行 initTriggers()。
  2. 打開 編輯 → 目前專案的觸發器,應會看到: refreshStationMap — 每日 03:15 autoPushMessage — 每分鐘 memberExpireSweep — 每日 03:10

常見錯誤與排錯表

訊息 可能原因 解法 觸發器重複執行 部署多次未清除舊觸發器 在建立前先 deleteTrigger 觸發時間不準 未指定時區 用 .inTimezone('Asia/Taipei') 免費版不能每秒跑 間隔低於 1 分鐘 改成 .everyMinutes(1)


延伸與 TODO

  • 加入條件判斷,依據環境(測試/正式)建立不同觸發器。
  • 使用 PropertiesService 儲存觸發器設定,方便版本管理。
  • 自動偵測觸發器異常並重新建立。

版本資訊(Changelog)

  • 2025-08-14:初稿完成,實測可在台鐵查詢專案正常運作。

工具小筆記|

  • 建議將觸發器初始化腳本獨立成檔案,方便在部署時單獨執行。
  • 不要在業務函式內直接建立觸發器,否則可能因使用者多次觸發而暴增。
留言
avatar-img
留言分享你的想法!
avatar-img
麟製所
2會員
43內容數
軟體、旅遊分享
麟製所的其他內容
2025/11/17
為什麼要管理設定? 上班時間改了 → 修改通知時間 換工作地點 → 修改通勤車站 週末不上班 → 調整通知週期 不需要某個設定 → 直接刪除 所有設定都可輕鬆修改或刪除,無需重新設定! 設定管理功能 ✅ 查看所有設定 ✅ 修改車站、時間、週期、預提醒 ✅ 刪除不需要的設定 ✅
2025/11/17
為什麼要管理設定? 上班時間改了 → 修改通知時間 換工作地點 → 修改通勤車站 週末不上班 → 調整通知週期 不需要某個設定 → 直接刪除 所有設定都可輕鬆修改或刪除,無需重新設定! 設定管理功能 ✅ 查看所有設定 ✅ 修改車站、時間、週期、預提醒 ✅ 刪除不需要的設定 ✅
2025/11/14
為什麼要綁定 Email? 確認付款與訂單管理更方便收到啟用碼、會員到期通知流程更順暢,提升使用體驗
2025/11/14
為什麼要綁定 Email? 確認付款與訂單管理更方便收到啟用碼、會員到期通知流程更順暢,提升使用體驗
2025/11/11
這篇文章說明如何在 Google Apps Script 中使用三層快取機制(記憶體快取、CacheService、PropertiesService)來大幅降低 API 呼叫次數和延遲
2025/11/11
這篇文章說明如何在 Google Apps Script 中使用三層快取機制(記憶體快取、CacheService、PropertiesService)來大幅降低 API 呼叫次數和延遲
看更多
你可能也想看
Thumbnail
你有沒有遇過這種情況? 每次連假快到,主管才突然說「欸要記得提醒大家喔」 大家都在問:「禮拜五要放假嗎?」「那天有補班嗎?」 HR 被問爆,還要一個一個回、更新行事曆、寄信、貼公告…… 我就是那個 HR(還是兼差的到底有沒有這麼可憐....)。 為了不要每次放假前都要「發公告」、「貼群組」
Thumbnail
你有沒有遇過這種情況? 每次連假快到,主管才突然說「欸要記得提醒大家喔」 大家都在問:「禮拜五要放假嗎?」「那天有補班嗎?」 HR 被問爆,還要一個一個回、更新行事曆、寄信、貼公告…… 我就是那個 HR(還是兼差的到底有沒有這麼可憐....)。 為了不要每次放假前都要「發公告」、「貼群組」
Thumbnail
本文探討如何利用政府提供的YouBike開放數據進行數據分析,以揭示共享單車系統的使用趨勢。作者使用Google Apps Script分析不同時間點的YouBike使用率,並通過線性回歸預測供需平衡,以及針對特定站點的使用模式進行深入挖掘。最後總結了公館不同出口的使用情況,提供了最佳的租借選擇。
Thumbnail
本文探討如何利用政府提供的YouBike開放數據進行數據分析,以揭示共享單車系統的使用趨勢。作者使用Google Apps Script分析不同時間點的YouBike使用率,並通過線性回歸預測供需平衡,以及針對特定站點的使用模式進行深入挖掘。最後總結了公館不同出口的使用情況,提供了最佳的租借選擇。
Thumbnail
Struggling to decide between the current and latest app version on Google Play? This article explains both versions and helps you choose the right one
Thumbnail
Struggling to decide between the current and latest app version on Google Play? This article explains both versions and helps you choose the right one
Thumbnail
工作時常會需要固定發廣告信,或業務開發信的話,可以考慮用google app script,呼叫gmail 的方式來處理。
Thumbnail
工作時常會需要固定發廣告信,或業務開發信的話,可以考慮用google app script,呼叫gmail 的方式來處理。
Thumbnail
Google Apps Script 的教學要來了!還請多多支持愛護🙏🙏🙏
Thumbnail
Google Apps Script 的教學要來了!還請多多支持愛護🙏🙏🙏
Thumbnail
Apps Script 的 Google Translate Service 可以幫你自動翻譯文本,是個還不錯的翻譯方案。來一起看看我的觀點!
Thumbnail
Apps Script 的 Google Translate Service 可以幫你自動翻譯文本,是個還不錯的翻譯方案。來一起看看我的觀點!
Thumbnail
[情報]GOOGLE APPS SCRIPT(GAS)線上課程優惠資訊 🔖課程名稱 : GOOGLE APPS SCRIPT(GAS)線上課程。 🔖課程地址 : https://reurl.cc/43v1WY。 🔖課程費用 : 募資價1590(僅30天)/正式價2690。 (另外也有
Thumbnail
[情報]GOOGLE APPS SCRIPT(GAS)線上課程優惠資訊 🔖課程名稱 : GOOGLE APPS SCRIPT(GAS)線上課程。 🔖課程地址 : https://reurl.cc/43v1WY。 🔖課程費用 : 募資價1590(僅30天)/正式價2690。 (另外也有
Thumbnail
-課程規劃:五章節,36單元 -課程期間:11/10號中午12點開始 -課程價錢:前30天有募資價錢,會便宜1000多,如果有折扣碼,還可以在打八折,折扣碼需要找我索取,之後就會恢復正式價錢 -課程章節:詳細可以掃圖片中的QR CODE看到 -課程重點:聚焦兩大重點,GAS跟試算表使用與GAS如何
Thumbnail
-課程規劃:五章節,36單元 -課程期間:11/10號中午12點開始 -課程價錢:前30天有募資價錢,會便宜1000多,如果有折扣碼,還可以在打八折,折扣碼需要找我索取,之後就會恢復正式價錢 -課程章節:詳細可以掃圖片中的QR CODE看到 -課程重點:聚焦兩大重點,GAS跟試算表使用與GAS如何
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News