Добавьте 1 день к дате из таблицы с помощью Google App Script / Javascript - Месяц сбрасывается в текущий месяц - PullRequest
0 голосов
/ 04 мая 2020

Я пытаюсь настроить функцию Google App Script, которая извлекает дату (в формате дд / мм / гг) из последнего столбца разворота и создает новый столбец с датой + один день.

Я видел предыдущие решения и пытался использовать то же самое, то есть newDate.setDate(lastDate.getDate()+1), но у меня были проблемы с правильным форматированием значения в сценарии. Это вариант моего кода, который я использую для l oop через год для значений, чтобы увидеть, что я получаю:

for (var i=0;i<365;i++){

    var lastRow = outputSheet.getLastRow();
    var newDate = new Date();

    var lastDate = outputSheet.getRange(lastRow,1).getValue();
    var newDateRng = outputSheet.getRange(lastRow+1,1);
    Logger.log(lastDate + 1, typeof lastDate, typeof (lastDate + 1));
    newDate.setDate(lastDate.getDate());
    Logger.log(newDate);
    newDate.setDate((newDate.getDate() + 1));
    Logger.log(newDate);
    var newDateFormatted = Utilities.formatDate(newDate, ss.getSpreadsheetTimeZone(), "dd/MM/YY");
    Logger.log(newDateFormatted);
    newDateRng.setValue(newDateFormatted);
}

С датой начала "01/03/2020 "Я получаю следующее поведение:

01/03/2020

02/05/2020

03/05/2020

...

31/05/2020

01/06/2020

02/05/2020

03/05/2020

...

31/05/2020

01/06/2020

02/05/2020

...

др c. На протяжении всего года. Хотя день увеличивается, месяц, по-видимому, сбрасывается после первого дня месяца.

Как примечание, я специально собираюсь выбрать дату из таблицы, а не использовать новую дату как сегодняшнюю и новую дату +1 как завтра.

Спасибо

1 Ответ

2 голосов
/ 04 мая 2020

Вам необходимо использовать другую переменную в l oop, иначе вы всегда будете возвращаться к одному и тому же месяцу.

Также избегайте использования строк для результата, сохраняйте объекты даты и отображайте их правильно.

Код выглядит так:

function otherTest(){
  var lastDate = SpreadsheetApp.getActiveSheet().getActiveCell().getValue();
  var date = new Date(lastDate); // create new date object
  var result = [];
  for (var i=0;i<365;i++){
    date=new Date(date).setDate(new Date(date).getDate()+1)
    Logger.log('date='+new Date(date))
    result.push([new Date(date)]);
  } 
  SpreadsheetApp.getActiveSheet().getRange(1,2,result.length,1).setValues(result).setNumberFormat('dd/MM/yyyy');
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...