我的电子表格回复有上限和下限,我在回复右侧输入这些上限和下限。 F2 和 G2 都有限制。 F2 为下限,G2 为上限。该代码使用 onFormSubmit 函数,它有一个 MailApp.sendEmail
函数,如果有人输入的数字超出限制,该函数将发送电子邮件。
我不明白的是,我在提交表单时读取的值实际上在范围内,但它仍然触发电子邮件。
我专门在全新的表单和电子表格上尝试了此代码,没有任何问题。
function onFormSubmit(e){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Responses 1");
var speedUL = sheet.getRange("K2").getValue(); //250V
var speedLL = sheet.getRange("L2").getValue(); //207V
//var speedUL= parseInt(activess.getRange("K2").getValue()); //250V
//var speedLL = parseInt(activess.getRange("L2").getValue()); //207V
var speed1 = parseInt(e.values[2]);
if((speed1 >= speedUL) || (speed1 <= speedLL)){
console.log('SpeedUL: '+speedUL);
console.log('SpeedLL: '+speedLL);
console.log('Speed1: '+speed1);
var template1 = HtmlService.createTemplateFromFile("speed1");
template1.speed1 = speed1;
MailApp.sendEmail("someone@gmail.com ",
"Out of Range Notification Speed of VSD",
"",
{htmlBody : template1.evaluate().getContent()});
}else
{
return;
}
}
这是我正在尝试执行的测试脚本。通过这段代码,我得到了这个
错误
2019 年 8 月 26 日 下午 5:24:29
类型错误:无法调用 null 的方法“getRange”。
在onFormSubmit(代码:7)
第 7 行引用 var speedUL =sheet.getRange("K2").getValue();
最佳答案
可能的原因:
getRange()
在电子表格类 (ss
) 上调用,而不是在工作表类 (sheet
) 上调用。这通常意味着采用第一张纸的 G2 和 F2 值,而不是指定的纸张。e.values
是字符串数组。当数字与字符串进行比较时,会发生隐式转换。这可能不是导致您出现问题的原因,但仍需要解决。
解决方案:
在工作表上调用
getRange()
或在电子表格上调用getRange()
时指定工作表名称。使用
e.value
到数字的显式类型转换。
片段:
var temperature = Number(e.values[1]);
var temperatureUCL = ss.getRange("H3 Reponses!G2").getValue();
//or
var temperatureUCL = sheet.getRange("G2").getValue();
引用文献:
关于javascript - 值正确且在范围内,但仍发送电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57518084/