在给定行条件下,Google脚本不会按预期触发
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在给定行条件下,Google脚本不会按预期触发相关的知识,希望对你有一定的参考价值。
我的表架构中有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);
}
};
答案
问题可能是由于使用开放参考D2:D
获取值,然后使用dates.length
设置for循环的迭代次数,因为它可能是一个太大的数字。
可以解决上述问题的一种“快速而肮脏”的方法是替换
var dateCount = dates.length;
通过
var dateCount = sheet.getDataRange().getValues().length;
以上是关于在给定行条件下,Google脚本不会按预期触发的主要内容,如果未能解决你的问题,请参考以下文章