Как суммировать значения даты в число (сумма дней)? - PullRequest
0 голосов
/ 09 апреля 2019

В Google Sheets у меня есть список действий с датой начала и номером, который указывает продолжительность в днях этого действия.Мне нужно использовать Google Apps Script для суммирования этих чисел с датой, чтобы получить конечный срок действия.

Я пробовал решение, опубликованное в этом вопросе: Добавление дней к дате - GoogleСкрипт .

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

Прямое суммирование принимает только дату и число в виде строки.Попытка описанного выше способа приводит к ошибке #NUM! в ячейке, которую я хочу преобразовать.

РЕДАКТИРОВАТЬ:

Я пробовал это, где V3 содержит датуЯ хочу подвести итог:

var fecha= new Date (ss.getSheetByName(camada).getRange("V3").getValue());
var fecha2= new Date();

fecha2.setDate(fecha.getDate() + 1);

ss.getSheetByName(camada).getRange("W3").setValue(fecha2);

Это, очевидно, работает, но проблема в том, что V3 содержит 5/13/2019, а возвращаемая дата - 4/14/2019, так что это еще день (13-> 14), ноэто на месяц меньше (5-> 4).

1 Ответ

0 голосов
/ 11 апреля 2019

Ответ был в Добавление дней к дате - Google Script .

Три вещи:

  • не определять fecha2 как новую дату (); это не дает ему контекста и вместо этого возвращает сегодняшнюю дату.
  • пусть fecha2 будет именем переменной
  • правильное утверждение: var fecha2 = new Date(fecha.setDate(fecha.getDate() + 1));

function so55593876() {
  var ss = SpreadsheetApp.getActiveSheet();
  var range = ss.getRange("C3");
  var value = range.getValue();
  Logger.log("DEBUG: Date Range: "+range.getA1Notation()+", Date value: "+value);//DEBUG
  var date = new Date(value); // make the sheet value a date object
  Logger.log("DEBUG: new date(value) = "+date);//DEBUG
  var dateTime = new Date(date.getTime()+1*3600000*24); 
  Logger.log("DEBUG: Method 1 (add one day = getTime()+1*3600000*24) = "+dateTime);//DEBUG  
  var dateDate = new Date(date.setDate(date.getDate()+1));
  Logger.log('DEBUG: Method 2 (add one day = getdate()+1) = '+dateDate);//DEBUG
  ss.getRange("C4").setValue(dateDate);
  Logger.log("<<<<<<<<<<<FETCHA>>>>>>>>>>>>>");
  var fecha = new Date(value); // make the sheet value a date object
  Logger.log("DEBUG: fecha: new date(value) = "+fecha);//DEBUG
  var fecha2= new Date(); // note there are no parameters; this will return TODAY's date
  Logger.log("DEBUG: fecha2 = "+fecha2);//DEBUG
  var fecha3 = fecha2.setDate(fecha.getDate() + 1);
  Logger.log("DEBUG: fecha3 = "+fecha3); //DEBUG
  var fecha2 = new Date(fecha.setDate(fecha.getDate() + 1));
  Logger.log("DEBUG: fecha2 = "+fecha2); //DEBUG
  ss.getRange("C5").setValue(fecha2);
}

Я оставил все операторы Logger в коде, чтобы вы могли идентифицировать различные значения в разных состояниях скрипта.

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