我的表架构中有2列:
D列=日期,即20180611 [yyymmdd]
F列=连续值,即0.1、0.6,-0.3等
这就是我要发生的事情:
在D列中检查昨天的日期。然后,进入相应的行,并检查F列是否大于0.5(代表昨天的日期)。如果为TRUE,则发送电子邮件警报。
这是我拥有的脚本,但是由于某种原因它不会触发。怎么了?
function readCell() {
var sheet = SpreadsheetApp.getActive().getSheetByName('test');
var dates = sheet.getRange('D1:D').getValues();
var date = null;
var dateRow = 0;
var dateCount = dates.length;
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
var yesterdayString = yesterday.toDateString();
for (dateRow; dateRow < dateCount; ++dateCount) {
try {
date = dates[dateRow].toDateString();
if (date === yesterdayString) {
++dateRow;
// To account for zero-based array
break;
}
} catch (error) {
Logger.log(error);
}
}
var value = sheet.getRange('F' + dateRow).getValue();
if (value >= 0.5) {
var result = ('Alert found on: ' + date);
MailApp.sendEmail('blabla@gmail.com', 'Alert', result);
}
};
答案 0 :(得分:0)
问题可能是由于使用开放引用D2:D
来获取值,然后使用dates.length
来设置for循环的迭代次数,因为它可能太大。
一种可以解决上述问题的“快速而肮脏”的方法是替换
var dateCount = dates.length;
作者
var dateCount = sheet.getDataRange().getValues().length;