google-apps-script - 在提交期间禁用多个 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();
}
解决方案
推荐阅读
- installation - 在 nsis 中使用 2 个欢迎/完成页面图像
- powershell - PowerShell:通过 .bat 脚本打开文件
- html - 可以在 html5 清单中缓存的文件数量是否有限制?
- azure - 带有私有/公共 IP 和 VM 计数条件的 Azure ARM 模板
- javascript - ExpressJs 等到 MongoDB 获取数据并在输出之前循环
- powerapps - MS powerapps 构建的底层框架和编程语言是什么?
- javascript - Dynamics365 列表视图:自定义 javascript 位于何处?
- html - 如何制作自适应图像滑块?
- r - 将动作按钮与 selectinput 水平对齐
- git - github:将 master 上的最后一次提交恢复到生产环境