使用MailApp.sendEmail(emailAddress,主题,消息)时出现问题;全新的Chrome V8运行时

时间:2020-04-15 06:04:28

标签: google-apps-script v8 google-apps-script-runtime

我正在运行一些与Google表格交互的Google Apps脚本,该表格会在表格更新时提取并比较一些值,如果超出某些条件,则会发送电子邮件。它已经运行了一年多,但是最近停止了运行,我发现问题出在新的Chrome V8运行时环境上。如果我运行旧版Java环境-它可以正常工作。

该脚本查找一种条件,在该条件下会超出在电子表格中设置的阈值-如果是,它将发送一封电子邮件。我证明该脚本可以识别超出阈值的条件,它可以从电子表格中写入和读取值,并且可以从单元格中读取和写入电子邮件地址。

MailApp.sendEmail(emailAddress, subject, message);似乎不起作用。任何建议,不胜感激。

脚本提取如下:

var DP_THRESH1 = doc.getSheetByName("DASHBOARD").getRange("L11"); //THRESHOLD
var DP_THESHOLD1 = DP_THRESH1.getValue();
var DP_SPREAD1 = doc.getSheetByName("DASHBOARD").getRange("H11"); //CALCULATED SPREAD
var DP_LASTSPREAD1 = DP_SPREAD1.getValue();
if (DP_LASTSPREAD1 < DP_THESHOLD1){
  // SET TO ZERO IS READY TO EMAIL STATE - THRESHOLD NOT EXCEEDED
  doc.getSheetByName("mailSheet").getRange('N2').setValue('0');
}
//EMAIL STATUS = 0 = READY TO EMAIL - 1 = HAVE SENT EMAIL
var EMAIL_status = doc.getSheetByName("mailSheet").getRange("N2"); 
var EMAIL_oneshot = EMAIL_status.getValue();
      
if ((DP_LASTSPREAD1 > DP_THESHOLD1) && (EMAIL_oneshot == 0)) {
  // IF THRESHOLD EXCEEDED AND NO EMAIL SENT
  doc.getSheetByName("mailSheet").getRange('N2').setValue('1'); 
  // Fetch the email address
  var emailRange =  doc.getSheetByName("mailSheet").getRange("B2");
  var emailAddress = emailRange.getValues();
  // Send Alert Email.
  var message = 'measured value is ' + DP_LASTSPREAD1;
  var subject = 'Possible Choke Alert';
  MailApp.sendEmail(emailAddress, subject, message);
}  

2 个答案:

答案 0 :(得分:2)

我不熟悉Google Apps脚本,但是我可以猜测:

getValue返回一个值,getValues返回一个二维值数组。在var emailAddress = emailRange.getValues()行中,如果您从后者切换到前者,是否可以正常工作?

答案 1 :(得分:0)

问题:

该脚本可在Rhino运行时中运行,因为在幕后(如果2D数组只有一个元素),脚本会在调用sendEmail时将数组转换为字符串。在V8中似乎并非如此,您必须提供一个字符串。有趣的是,这种行为已经在Issue Tracker中进行了报道。

无论如何,如果要从单个单元格获取信息,则应该使用getValue()而不是getValues()

参考: