Сценарии приложений шагают по месяцам и форматируют дату

Я новичок в App Script, будьте осторожны!

У меня есть таблица с датой начала и количеством месяцев, мне нужно перечислить каждый повторяющийся месяц с даты начала до количества месяцев.

Я борюсь с 2 проблемами:

  1. Первая дата, помещенная в массив, кажется, обновляется, когда я циклически повторяю даты
  2. Форматы в UNIX, и я не могу заставить их быть полезными, несмотря на очень много чтения!

Большое спасибо за любую помощь!

Входной файл (https://i.stack.imgur.com/2EJ65.png)

Выходной файл (https://i.stack.imgur.com/0DH5R.png)

Журнал консоли (https://i.stack.imgur.com/NVqck.png)

var ss = SpreadsheetApp.getActiveSpreadsheet();

// Get Data sheet
var rawData = ss.getSheetByName('Sheet3');

// Get a date and set it as a date format
var start = new Date(rawData.getRange("B2").getValues());

console.info(start);

// Get Months
var months = rawData.getRange("C2").getValues();

// Define dates array
var dates = [];

// Add first date
const startDate = start
dates.push([startDate]);

//Add rest of dates dates in a loop
for (var run = 1;run < months;run++) {
  //get the last pasted month name
  var lastMonth = start.getMonth();
  //push next month
  dates.push([start.setMonth(lastMonth+1)]);
}

// Get processedData sheet
var processedData = ss.getSheetByName('sheet2');

// Post the outputArray to the sheet in a single call
console.info(start);
console.info(startDate);
console.info(dates);
console.info(dates.length);
console.info(dates[0].length);

processedData.getRange(1,1,6,1).setValues(dates);
 
}
Работа с датами и временем в языке Java
Работа с датами и временем в языке Java
Работа с датами и временем в языке Java была сильно переработана начиная с версии Java 8 и далее с появлением библиотеки java.time.
0
0
26
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Увеличение дат по месяцам и установка формата

function lfunko() {
  const ss = SpreadsheetApp.getActive();
  let dt = new Date();
  let start = new Date(dt.getFullYear(),dt.getMonth(),dt.getDate());//need to change back to your value
  const months = 10;//need to change back to your value
  let dates = [];
  dates.push([start]);
  for (let run = 1; run < months; run++) {
    dates.push([new Date(start.getFullYear(),start.getMonth() + run, start.getDate())])
  }
  ss.getSheetByName('Sheet0').getRange(1, 1, dates.length).setValues(dates).setNumberFormat("mm/dd/yyyy");//changed sheet name
  Logger.log(dates);
}

это потрясающе, большое спасибо!

Jez Collins 18.03.2022 15:17

Другие вопросы по теме