Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script &引用;例外:此脚本的触发器太多;创建基于时间的触发器时_Google Apps Script_Triggers - Fatal编程技术网

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,请更新问题,以澄清问题是由您在上述评论中描述的内容引起的。