Я попытался создать скрипт, но есть некоторые проблемы. Формат таблицы состоит из 2 столбцов, которые представляют собой дату и значения. Это потребности:
ИДЕАЛЬНОЕ СОСТОЯНИЕ
Это была моя отправная точка, но она не дает того, чего я хочу. Вот эти проблемы:
ТЕКУЩЕЕ СОСТОЯНИЕ
1. Скрипт захватывает каждую строку, в которой столбец F был больше 0,5 в прошлом. Я только хочу проверить на сегодня (который будет последним рядом). Не следует просматривать все в прошлом.
2. В теле письма указано: "Результат найден в [номер строки]". Это не имеет смысла. Я хочу, чтобы отображалась дата, а не номер строки.
Это текущий код. Пожалуйста помоги.
function readCell() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("test");
var values = sheet.getRange("F3:F").getValues(); //this has the values
var date = sheet.getRange("D3:D").getValues(); // this has the date
var results = [];
for(var i=0;i<values.length;i++){
if(values[i]>=0.5)
{
results.push("Result found on:" +(i+3));
}
}
MailApp.sendEmail('[email protected]', 'Alert', results.join("\n"));
};
Последней строкой в этом контексте является строка 217, а не 218, при условии, что sheet.getLastRow() будет игнорировать # DIV/o! ценности. Смотрите скриншот для этого.
ПОСЛЕДНЕЕ ОБНОВЛЕНИЕ
Текущая ошибка связана с "toDateString". Я думаю, это может быть связано с тем, что мой Google Sheet на один день позади Итак, сегодня 10 января, последняя строка в моем Google Sheet - 9 января. Я думаю, именно поэтому ошибка происходит. Можешь подтвердить? В таком случае, как я могу изменить его на сегодня-1 день?
Увидеть ниже.
Вот как вы можете проверить последний ряд:
function readCell() {
var sheet = SpreadsheetApp.getActive().getSheetByName('test');
var lastRow = sheet.getLastRow();
var value = sheet.getRange('F' + lastRow).getValue();
var date = sheet.getRange('D' + lastRow).getValue();
if (value >= 0.5) {
var result = 'Result found on: ' + date;
MailApp.sendEmail('[email protected]', 'Alert', result);
}
};
После просмотра ваших данных, я думаю, что код ниже подойдет вам лучше.
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) {
date = dates[dateRow];
if (date instanceof Date) {
date = date.toDateString();
if (date === yesterdayString) {
++dateRow;
// To account for zero-based array
break;
}
}
}
var value = sheet.getRange('F' + dateRow).getValue();
if (value >= 0.5) {
var result = 'Result found on: ' + date;
MailApp.sendEmail('[email protected]', 'Alert', result);
}
};