首页 > 解决方案 > 在提交期间禁用多个 onSubmit 触发器实例

问题描述

我有一个带有 onSubmit 触发器的表单,它将用作域范围的插件。插件可用于许多表单。我需要禁用多个提交触发器,而是当前只运行 1 个实例。假设表单提交同时到达,我需要避免当前脚本运行时脚本运行的重复实例。我尝试使用锁定服务

function onFormSubmit(e) {
    // lock the document response
    var lock = LockService.getDocumentLock();
    if (lock.hasLock()) return;
    //do some tasks
    lock.releaseLock();
}

如何使脚本(插件)作为单个实例运行。

更新:这段代码也没有达到预期的功能

function OnSubmits(e) {
    var releaseLock;

    releaseLock = function() {
        lock.releaseLock();

    }

    var lock = LockService.getDocumentLock();
    lock.tryLock(1);
    if (!lock.hasLock()) {
        return;
    }
    var value = cUseful.Utils.expBackoff(function() {
        releaseLock();
        return PropertiesService.getScriptProperties().getProperty('key');
    });
    if (value == null) value = 0;
    else value++;
    cUseful.Utils.expBackoff(function() {
        var folder = DriveApp.getFolderById("1wFGMh38JGarJd8CaiaOynlB7iiL_Pw6D");
        folder.addFile(DriveApp.getFileById(DocumentApp.create('Document Name ' + value).getId()));
        PropertiesService.getScriptProperties().setProperty('key', value);
    });

    releaseLock();
}

标签: google-apps-scriptlockinggoogle-forms

解决方案


推荐阅读