Получение сегодняшней даты в Google App Scripts - PullRequest
1 голос
/ 07 июня 2019

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

Однако я попробовал синтаксис:

var now = new Date();

Но возвращается

31/12/1899.

Как это исправить?

function onEdit(event) {
      var ss = SpreadsheetApp.getActiveSpreadsheet();
      var s = event.source.getActiveSheet();
      var r = event.source.getActiveRange();
      var now = new Date();


      if(r.getColumn() == 1 && r.getValue() <= (now -10)) {
        var row = r.getRow();
        var numColumns = s.getLastColumn();
        s.getRange(row, 1, 1, numColumns).setBackgroundColor('#DBFF33');
        ss.getRange('B3').setValue(now);
      }

      else {
      }
    }

1 Ответ

0 голосов
/ 08 июня 2019

Объекты даты в скрипте Google Apps похожи, но немного отличаются от основных объектов даты в JavaScript. ссылка проходит через детали.

В разделе Date Math они рекомендуют вычислять даты, используя функцию date.getTime (), добавляя или вычитая миллисекунды и явно создавая новую дату:

var MILLIS_PER_DAY = 1000 * 60 * 60 * 24;
var checkDate = new Date(now.getTime() - (MILLIS_PER_DAY * 10); 

Вычитание 10 из объекта Date просто превращает его в целое число, и оно больше не распознается как дата.

Так что в вашем случае, чтобы проверить дату старше 10 дней, вы должны сделать следующее:

function onEdit(event) {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var s = event.source.getActiveSheet();
  var r = event.source.getActiveRange();
  var now = new Date();

  var MILLIS_PER_DAY = 1000 * 60 * 60 * 24;
  var checkDate = new Date(now.getTime() - (MILLIS_PER_DAY * 10));

  if (r.getColumn() == 1 && r.getValue() <= checkDate) {

    var row = r.getRow();
    var numColumns = s.getLastColumn();
    s.getRange(row, 1, 1, numColumns).setBackgroundColor('#DBFF33');
    ss.getRange('B3').setValue(now);
  } else {

  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...