在给定行条件下,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);
    }
};

这是enter image description here的数据

答案

问题可能是由于使用开放参考D2:D获取值,然后使用dates.length设置for循环的迭代次数,因为它可能是一个太大的数字。

可以解决上述问题的一种“快速而肮脏”的方法是替换

var dateCount = dates.length;

通过

var dateCount = sheet.getDataRange().getValues().length;

以上是关于在给定行条件下,Google脚本不会按预期触发的主要内容,如果未能解决你的问题,请参考以下文章

逐行文件 io 在 Windows 中无法按预期工作

动态脚本标签加载未按预期工作

第一次选择pickerView时未触发条件

在给定时间后自动终止Linux进程/ php脚本

使用 getch() 的循环条件未按预期结束循环

更新触发器..没有按预期工作?