You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修复Google Apps Script重复创建的工作日时间触发器重复触发问题

解决触发器重复创建导致函数多次触发的问题

问题根源

多次运行createTriggers函数会重复创建针对take1的工作日晚8点触发器,最终导致同一时间点take1被触发多次。


步骤1:精准清理重复触发器

修复你找到的删除触发器代码,只删除和take1相关的时钟触发器(避免误删其他函数的触发器):

function deleteTake1Triggers() {
  var allTriggers = ScriptApp.getProjectTriggers();
  // 倒序遍历删除,避免因数组长度变化导致索引异常
  for (var i = allTriggers.length - 1; i >= 0; i--) {
    var trigger = allTriggers[i];
    // 筛选触发函数为take1的时钟触发器
    if (trigger.getEventType() === ScriptApp.EventType.CLOCK && trigger.getHandlerFunction() === "take1") {
      ScriptApp.deleteTrigger(trigger);
    }
  }
}

步骤2:修改创建触发器的函数,避免重复

更新createTriggers,让它每次运行前先清理旧的take1触发器,再创建新的:

function createTriggers() {
  // 先清理所有已存在的take1触发器
  deleteTake1Triggers();
  
  var workDays = [
    ScriptApp.WeekDay.MONDAY,
    ScriptApp.WeekDay.TUESDAY,
    ScriptApp.WeekDay.WEDNESDAY,
    ScriptApp.WeekDay.THURSDAY,
    ScriptApp.WeekDay.FRIDAY
  ];
  
  for (var i = 0; i < workDays.length; i++) {
    ScriptApp.newTrigger("take1")
      .timeBased()
      .onWeekDay(workDays[i])
      .atHour(20)
      .create();
  }
}

操作流程

  1. 在脚本编辑器中运行deleteTake1Triggers,清除所有已存在的重复触发器
  2. 运行修改后的createTriggers,创建唯一的5个工作日触发器(周一至周五晚8点)
  3. 之后即使误触运行createTriggers,也会先清理旧触发器再重建,不会出现重复触发的问题

内容的提问来源于stack exchange,提问作者Diana Economou

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 14:46:22