此附加组件在此文档中为此Google用户帐户创建了太多基于时间的触发器

问题描述 投票:1回答:2

我在标题中收到错误 - 此加载项在此文档中为此Google用户帐户创建了太多基于时间的触发器

当我运行加载项。

附加组件用于创建时间触发器。我在3个文档中共创建了7个触发器。

现在我无法在任何文档中创建新的触发器。

ScriptApp.newTrigger(“function”)。timeBased()。atHour(5).everyDays(1).create();

google-apps-script triggers google-sheets google-spreadsheet-api
2个回答
3
投票

调用创建新触发器的函数时,最好在同一函数中删除同名的所有现有触发器。否则,每次运行该功能时,最终都可能会创建一个新的触发器。

另一个好的选择是检查现有触发器并仅在不存在时创建新触发器。

function createTrigger(fnName) {

  var triggers = ScriptApp.getProjectTriggers();
  var triggerExists = false;

  for (var i = 0; i < triggers.length; i++) {
    if (triggers[i].getHandlerFunction() === fnName) {
      triggerExists = true;
      break;
    }
  }

  if (!triggerExists) {
    ScriptApp.newTrigger(fnName).timebased().everyHours(1).create;
  } 

}

0
投票

您只需运行一次即可创建触发器。在脚本编辑器中,转到编辑>所有触发器,您应该看到脚本的所有触发器。您将看到从该newTrigger函数创建的多个相同触发器。删除所有重复项。

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.