Как вытащить дату из ячейки и сравнить ее с сегодняшней датой - PullRequest
0 голосов
/ 11 апреля 2019

Я использую электронную таблицу для управления датами окончания сертификации.Я хочу отправить электронное письмо сотруднику, когда срок его действия истекает в течение 90 дней.Я хочу отправить только одно письмо.Я изо всех сил пытаюсь получить дату из ячейки и сравнить ее с сегодняшней датой.

Я хочу отправить электронное письмо, если сегодняшняя дата + 90 дней в MS> дата окончания сертификации в MS.

Я начал использовать шаблон для предотвращения отправки дубликатов электронных писем.У меня получилось работать с if && со словами в двух ячейках.Я изо всех сил пытаюсь заставить даты работать.Я пытался использовать getTime() для получения дат в MS, но getValues().getTime возвращает ошибку.

var EMAIL_SENT = 'EMAIL_SENT';

var NintyDayInMs = 90*24*60*60*100;
var Today = new Date().getTime();
var expired = Today+NintyDayInMs;

/**
 * Sends non-duplicate emails with data from the current spreadsheet.
 */
function sendEmails2() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var startRow = 2; // First row of data to process
  var numRows = 2; // Number of rows to process
  // Fetch the range of cells A2:B3
  var dataRange = sheet.getRange(startRow, 1, numRows, 4);
  // Fetch values for each row in the Range.
  var data = dataRange.getValues();
  for (var i = 0; i < data.length; ++i) {
    var row = data[i];
    var emailAddress = row[0]; // First column
    var message = row[1]; // Second column
    var emailSent = row[2]; // Third column
    var exp = row[3]; // Fourth column
    var expDate = exp.getTime();

    if (emailSent != EMAIL_SENT && expDate < expired) { // Prevents 
sending duplicates
      var subject = 'Sending emails from a Spreadsheet';
      MailApp.sendEmail(emailAddress, subject, message);
      sheet.getRange(startRow + i, 3).setValue(EMAIL_SENT);
      // Make sure the cell is updated right away in case the script is 
 interrupted
      SpreadsheetApp.flush();
    }
  }
}

Мой текущий код приводит к

TypeError: Не удается найти функцию getTimeв объекте (дата в ячейке).(строка 26, файл "Код")

1 Ответ

1 голос
/ 12 апреля 2019

Чтение Добавление дней к дате - Google Script для лучшего понимания арифметики даты в сценариях.

Недостаток в попытке связать дату истечения срока действия. Вместо:
var exp = row[3]; // Fourth column
var expDate = exp.getTime();

используйте только:
var expDate = new Date(row[3]); // make the sheet value a date object

Тогда все остальное идет естественно ...

var expDate = new Date(row[3]); // make the sheet value a date object    
Logger.log("expiry = "+expDate);    
var today = new Date();    
Logger.log("today = "+today);    
var today90 = new Date(today.getTime()+90*3600000*24);// 90 days from today    
Logger.log("today90 = "+today90);    
if ((today90 > expDate) && (emailSent!=EMAIL_SENT)){    
   Logger.log("send the email");    
}    
else    
{    
   Logger.log("don't send the email");    
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...