为什么基于V8的未知原因禁用基于时间的GAS触发器?

问题描述 投票:0回答:1

除其他事项外,我具有以下四个功能。

  • fallback()
  • newSubmission()
  • installSubmissionTrigger()
  • uninstallSubmissionTrigger()

我有一个触发器:

  1. 运行表单提交。
  2. 调用将某些内容发布到电子表格以供审核的fallback()。>
  3. [fallback呼叫installSubmissionTrigger()
  4. [installSubmissionTrigger创建一个基于时间的触发器,每分钟运行一次。
  5. 触发器调用newSubmission()
  6. [newSubmission做我想做的事,然后叫uninstallSubmissionTrigger()
  7. [uninstallSubmissionTrigger删除基于时间的触发器。
  8. 使用Rhino,所有这些都可以正常工作,但是当我启用V8时,基于时间的触发器由于应有的未知原因而被禁用。

[也使用V8时,如果我手动运行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]);
    }
  }
}

用例示例:

  1. 客户提交了新门的价格报价请求。
  2. 然后,他们还提交了定价请求,以扩展其房屋。
  3. 此门很可能是扩展的一部分,因此理想情况下,我们会将此请求发送给处理房屋扩展和门的公司。
  4. 但是,如果立即处理了门请求,则可能已将其发送给专门处理门的专家。

除其他事项外,我具有以下四个功能。 fallback()newSubmission()installSubmissionTrigger()uninstallSubmissionTrigger()我有一个触发器:在表单提交时运行。电话...

google-apps-script google-sheets v8
1个回答
1
投票

已经报告了您遇到的这个问题,它与V8运行时有关[1]。您可以使用按预期方式运行的DEPRECATED_ES5运行时版本。

© www.soinside.com 2019 - 2024. All rights reserved.