在给定行条件下,Google脚本不会按预期触发

问题描述 投票:0回答:1

我的表架构中有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('[email protected]', 'Alert', result);
    }
};

这是enter image description here的数据

javascript google-apps-script google-sheets
1个回答
0
投票

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

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

var dateCount = dates.length;

通过

var dateCount = sheet.getDataRange().getValues().length;
© www.soinside.com 2019 - 2024. All rights reserved.