Google apps script &引用;例外:此脚本的触发器太多;创建基于时间的触发器时
嘿,我是谷歌应用程序脚本的初学者。我有一个错误: 异常:此脚本的触发器太多 尽管我只有一个触发器,即:Google apps script &引用;例外:此脚本的触发器太多;创建基于时间的触发器时,google-apps-script,triggers,Google Apps Script,Triggers,嘿,我是谷歌应用程序脚本的初学者。我有一个错误: 异常:此脚本的触发器太多 尽管我只有一个触发器,即: ScriptApp.newTrigger("Status()").timeBased().atDate(2021, 2, 1).create(); 我实际上在考虑使用更多的时间驱动触发器,但我尝试了1,它有这个错误。你知道发生了什么事吗 启动Web应用程序时,始终会创建新的触发器。在访问Web应用程序时,有没有办法保留触发器而不创建另一个触发器?问题 每次打开Web应用时安装新触发器 确保
ScriptApp.newTrigger("Status()").timeBased().atDate(2021, 2, 1).create();
我实际上在考虑使用更多的时间驱动触发器,但我尝试了1,它有这个错误。你知道发生了什么事吗
启动Web应用程序时,始终会创建新的触发器。在访问Web应用程序时,有没有办法保留触发器而不创建另一个触发器?问题 每次打开Web应用时安装新触发器 确保只安装一个触发器实例 下面的示例是一个实用程序,用于检查可安装触发器是否已就位或是否需要安装。根据您的喜好进行配置,并在每次打开Web应用程序时使用
doGet
trigger运行
/**
* @summary gets or installs a trigger
* @param {string} callbackName
* @param {GoogleAppsScript.Script.EventType} type
* @param {function} installer
*/
const getOrIntallTrigger = (callbackName, type, installer) =>
/**
* @returns {?GoogleAppsScript.Script.Trigger}
*/
() => {
console.log(`Checking for triggered ${callbackName} function`);
const ss = SpreadsheetApp.getActiveSpreadsheet();
const triggers = ScriptApp.getUserTriggers(ss);
const found = triggers
.filter(trigger => trigger.getEventType() === type && trigger.getHandlerFunction() === callbackName);
const [trigger] = found;
!trigger && installer();
return trigger;
};
注释
起初,我认为这是一个复制品,但你说你只创建了一个。你确定吗?关于当前脚本的触发器数量,您怎么说?请更新问题,包括如何设置(安装)触发器哇,我只是检查它,显然每次我尝试运行触发器时,它都保存为触发器。问题解决了,谢谢!没问题-这是一个很常见的问题。你不需要多次安装触发器,这个函数应该只运行一次,但是你已经知道了——祝你好运@谢谢你!但是,很明显,我遇到了另一个问题,所以每次我从链接启动Google Web应用程序时,就会创建触发器。这就是我太多触发器错误的原因。当web应用程序被访问时,有没有办法在不创建另一个触发器的情况下保留触发器?没问题。Ray,请更新问题,以澄清问题是由您在上述评论中描述的内容引起的。