javascript - 值正确且在范围内,但仍发送电子邮件

标签 javascript google-apps-script

我的电子表格回复有上限和下限,我在回复右侧输入这些上限和下限。 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/

相关文章:

javascript - package.json 中的 typescript 声明应该放在 "dependencies"、 "devDependencies"还是两者?

google-apps-script - Sheet.getRange(1,1,1,12) 括号中的数字表示什么?

google-apps-script - onEdit(e) 在附加组件中不起作用

regex - 如果未找到常量,则忽略(其中常量是正则表达式)

javascript - 使用javascript更改按钮中的文本?

javascript - 无法将接收到的 JSON 解码为数组

javascript - 将局部变量释放到窗口作用域变量?

javascript - main.js 与index.js 基本相同吗?

javascript - Google SpreadSheet 脚本 - 检查文件数量

javascript - 清除多个工作表中的多个范围