Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 为什么在V8中基于时间的气体触发器因未知原因被禁用?_Google Apps Script_Google Sheets_V8 - Fatal编程技术网

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
    删除基于时间的触发器
  • 使用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]);
        }
      }
    }
    
    功能回退(事件){
    ...
    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
    用例示例:

  • 客户提交了新门的定价报价请求
  • 然后,他们还提交了一份价格报价申请,要求延长他们的房子
  • 此门很可能是扩展的一部分,因此理想情况下,我们会将此请求发送给处理房屋扩展和门的公司
  • 但如果door请求立即得到处理,它可能会被发送给专门处理doors的专家

  • 您遇到的这个问题已被报告,它与V8运行时[1]有关。您可以使用
    已弃用的ES5
    运行时版本,该版本按预期运行


    [1]

    为什么要创建这么多触发器?你最终想做什么?如果表单提交触发器上已经有了
    回退
    ,为什么不直接从它调用
    newSubmission
    ?@imthenachman有时单个用户可能会多次提交表单。如果是这种情况,第二次提交可能会改变第一次提交的情况。假设第二次提交将在一分钟内完成。这就是为什么在提交表单一分钟后调用
    newSubmission()
    的原因。请查看LockServices,以便可以提交第二次提交,如果是,会影响第一次提交吗?你能举个例子吗?例子:一位客户提交了一份新门的定价申请。然后,他们还提交了一份价格报价申请,要求延长他们的房子。此门很可能是扩展的一部分,因此理想情况下,我们会将此请求发送给处理房屋扩展和门的公司。但是如果door请求被立即处理,它可能会被发送给专门处理doors的专家。ES5运行时将保持多长时间可用?只是想确保当ES5被弃用并且我的脚本停止工作时,我们不会自动转移到V8。