我需要返回已重新提交的Google表单提交的行号。
我关注了位于Google Forms App Script : How to check if current submission is editing response or a new response处的所有信息,但对于触发器formSubmit,却收到此错误:
例外:无法将'15 .0'转换为int。
所以它正确地找到了第15行,并似乎给了我一个数字,但是当我尝试使用该数字时,我一直收到错误消息。
我尝试使用+num
,Number()
进行转换,将行号放入单元格并手动更改格式,然后使用脚本和公式将其复制到另一个单元格中,但是当发生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。
在我看来,您可以使用此功能执行整个功能:
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()
}
}
在编写代码时需要阅读文档。
第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()
}
}
}