Google Script не запускается должным образом при данных условиях строки - PullRequest
0 голосов
/ 11 января 2019

В моей схеме таблицы есть 2 столбца:

Столбец D = Дата, то есть 20180611 [гггммдд]
Столбец 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

1 Ответ

0 голосов
/ 12 января 2019

Проблема может быть связана с использованием открытой ссылки D2:D для получения значений, а затем с помощью dates.length для установки количества итераций в цикле for, поскольку это может быть слишком большое число.

Один "быстрый и грязный" способ, который мог бы решить вышеупомянутую проблему, состоит в замене

var dateCount = dates.length;

от

var dateCount = sheet.getDataRange().getValues().length;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...