Google apps script 为什么在V8中基于时间的气体触发器因未知原因被禁用?
我(除其他外)有以下四项职能Google apps script 为什么在V8中基于时间的气体触发器因未知原因被禁用?,google-apps-script,google-sheets,v8,Google Apps Script,Google Sheets,V8,我(除其他外)有以下四项职能 fallback() newSubmission() installSubmissionTrigger() uninstallSubmissionTrigger() 我有一个触发器: 在表单提交时运行 调用fallback(),将某些内容发布到电子表格以供查看 fallback调用installSubmissionTrigger() installSubmissionTrigger创建基于时间的触发器,每分钟运行一次 触发器调用newSubmission() n
fallback()
newSubmission()
installSubmissionTrigger()
uninstallSubmissionTrigger()
fallback()
,将某些内容发布到电子表格以供查看fallback
调用installSubmissionTrigger()
installSubmissionTrigger
创建基于时间的触发器,每分钟运行一次newSubmission()
newSubmission
执行我想要的操作并调用uninstallSubmissionTrigger()
uninstallSubmissionTrigger
删除基于时间的触发器installSubmissionTrigger()
,触发器也会触发。如果我手动运行
fallback()
,触发器也会触发
触发器被禁用的未知原因是什么
function fallback(event) {
...
installSubmissionTrigger();
...
}
function newSubmission() {
...
uninstallSubmissionTrigger();
...
}
function installSubmissionTrigger() {
var properties = PropertiesService.getScriptProperties();
if(!properties.getProperty("triggerID")) {
var trigger = ScriptApp.newTrigger('newSubmission').timeBased().everyMinutes(1).create();
properties.setProperty("triggerID", trigger.getUniqueId());
Logger.log("Creating newSubmission trigger: " + trigger.getUniqueId());
}
}
function uninstallSubmissionTrigger() {
var properties = PropertiesService.getScriptProperties();
properties.deleteProperty("triggerID");
// Loop over all triggers.
var allTriggers = ScriptApp.getProjectTriggers();
for (var i = 0; i < allTriggers.length; i++) {
// If the current trigger is the correct one, delete it.
if (allTriggers[i].getHandlerFunction() === 'newSubmission') {
ScriptApp.deleteTrigger(allTriggers[i]);
}
}
}
功能回退(事件){
...
installSubmissionTrigger();
...
}
函数newSubmission(){
...
卸载SubmissionTrigger();
...
}
函数installSubmissionTrigger(){
var properties=PropertiesService.getScriptProperties();
if(!properties.getProperty(“triggerID”)){
var trigger=ScriptApp.newTrigger('newSubmission').timebase().everyMinutes(1.create();
setProperty(“triggerID”,trigger.getUniqueId());
Logger.log(“正在创建newSubmission触发器:“+trigger.getUniqueId());
}
}
函数uninstallSubmissionTrigger(){
var properties=PropertiesService.getScriptProperties();
属性。删除属性(“triggerID”);
//循环所有触发器。
var allTriggers=ScriptApp.getProjectTriggers();
对于(var i=0;i
用例示例:
您遇到的这个问题已被报告,它与V8运行时[1]有关。您可以使用
已弃用的ES5
运行时版本,该版本按预期运行
[1] 为什么要创建这么多触发器?你最终想做什么?如果表单提交触发器上已经有了
回退
,为什么不直接从它调用newSubmission
?@imthenachman有时单个用户可能会多次提交表单。如果是这种情况,第二次提交可能会改变第一次提交的情况。假设第二次提交将在一分钟内完成。这就是为什么在提交表单一分钟后调用newSubmission()
的原因。请查看LockServices,以便可以提交第二次提交,如果是,会影响第一次提交吗?你能举个例子吗?例子:一位客户提交了一份新门的定价申请。然后,他们还提交了一份价格报价申请,要求延长他们的房子。此门很可能是扩展的一部分,因此理想情况下,我们会将此请求发送给处理房屋扩展和门的公司。但是如果door请求被立即处理,它可能会被发送给专门处理doors的专家。ES5运行时将保持多长时间可用?只是想确保当ES5被弃用并且我的脚本停止工作时,我们不会自动转移到V8。