提交期间禁用onSubmit触发器的多个实例

时间:2018-09-20 06:55:33

标签: google-apps-script locking google-form

我有一个带有onSubmit触发器的表单,它将用作域范围的添加-on。可以使用add-on 对于许多形式。 我需要禁用多个提交触发器,而是当前仅运行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();
}

0 个答案:

没有答案