如何检查当前表单提交是否在编辑响应中

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

我需要返回已重新提交的Google表单提交的行号。

我关注了位于Google Forms App Script : How to check if current submission is editing response or a new response处的所有信息,但对于触发器formSubmit,却收到此错误:

例外:无法将'15 .0'转换为int。

所以它正确地找到了第15行,并似乎给了我一个数字,但是当我尝试使用该数字时,我一直收到错误消息。

我尝试使用+numNumber()进行转换,将行号放入单元格并手动更改格式,然后使用脚本和公式将其复制到另一个单元格中,但是当发生formSubmit。您可以帮助我确定如何解决此错误吗?

function email(e) { 
var sh   = SpreadsheetApp.getActiveSheet();
var ss   = SpreadsheetApp.getActiveSpreadsheet();  
var gid  = sh.getSheetId().toString(); 
var last = ss.getLastRow();
var valueColumnLocation;

for(k=1;k<=ss.getLastColumn();k++) {
  if (sh.getRange(1,k).getValues() == "Select Worksite") {
    var valueColumnLocation = k;
    break;
  }
};


...
if (...){...}

  else{
  var rowrev = e.range.getRow();
  //sh.getRange("rownumberrev").setValue(rowrev);

  PropertiesService.getScriptProperties().setProperty('mykey',rowrev); 

  if (sh.getRange(rowrev,valueColumnLocation,1,1).getValues()=="USA"){
    uploadrev()
    pdfFCrev()
  }

    else{if(sh.getRange(rowrev,valueColumnLocation,1,1).getValues()=="GLOBAL"){
      uploadrev()
      pdfGLrev()           
      }

    } 
  }
}

向原始帖子添加更多细节Google表单填充的电子表格的列A-CZ我正在寻找已编辑的行,然后在该行的特定列中寻找一个值。如果该值==美国,请执行此操作;如果该值== Global,请执行此操作。

因此,在此图片中,用户重新提交了第15行,并且更改在E列中。我想利用已编辑第15行的知识,我们之前发现“ Select Worksite”列#现在位于列中Z,然后检查范围(15,26,1,1)== USA还是Global。

也许有一种完全不同或更好的方法可以做到这一点,但我没有想到,但是当我尝试在sh.getRange()中使用e.range值时,出现错误,它无法将15.0转换为int。

submission table

google-apps-script google-sheets google-form
2个回答
0
投票

在我看来,您可以使用此功能执行整个功能:

function email(e) { 
  PropertiesService.getScriptProperties().setProperty('mykey',e.range.getRow()); 
  if(e.namedValues["Select Worksite"]=="USA"){
    uploadrev();
    pdfFCrev();
  }
  if(e.namedValues["Select Worksite"]=="GLOBAL"){
    uploadrev()
    pdfGLrev()           
  }
}

在编写代码时需要阅读文档。

on FormSubmit Event Object


0
投票

第35次尝试就是魅力。我不认为我需要,但我重述了变量sh&ss。然后我更改了:sh.getRange(newsub,valueColumnLocation).getValue()&现在可以工作了

else{

  var sh   = SpreadsheetApp.getActiveSheet();
  var ss   = SpreadsheetApp.getActiveSpreadsheet();   

  var newsub = e.range.getRow(); 

  if (sh.getRange(newsub,valueColumnLocation).getValue()=="USA"){
    uploadrev()
    pdfFCrev()
  }

    else{if(sh.getRange(newsub,valueColumnLocation).getValue()=="Global"){
      uploadrev()
      pdfPArev()           
         }

     } 

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