我有一个带有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();
}