我正在运行一些与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);
}
答案 0 :(得分:2)
我不熟悉Google Apps脚本,但是我可以猜测:
getValue
返回一个值,getValues
返回一个二维值数组。在var emailAddress = emailRange.getValues()
行中,如果您从后者切换到前者,是否可以正常工作?
答案 1 :(得分:0)
该脚本可在Rhino运行时中运行,因为在幕后(如果2D数组只有一个元素),脚本会在调用sendEmail
时将数组转换为字符串。在V8中似乎并非如此,您必须提供一个字符串。有趣的是,这种行为已经在Issue Tracker中进行了报道。
无论如何,如果要从单个单元格获取信息,则应该使用getValue()
而不是getValues()
。