Доброго времени суток!
В гугл таблицах у меня создан скрипт, который нужен чтобы автоматически высчитывать дату завершения заказа основываясь на дате отправки, конкретном исполнителе и виде работы. Скрипт на первый взгляд работает, однако проблема появляется когда изначальная дата выходит за пределы текущего месяца. Так, например, если суммарный срок выполнения заказа 5 дней, дата отправки - 31.08.2018 и текущий месяц у нас соответственно сентябрь, дата завершения рассчитается как 04.10(!).2018. И наоборот, при тех же параметрах и дате отправки 1.10.2018 дата завершения рассчитается как 06.09(!).2018
Я еще новичок в javascript и не могу понять почему так происходит. Подскажите пожалуйста в чем проблема.
Функция которая рассчитывает дату и вызывается в onEdit ячеек даты, исполнителя и вида работы:
function modifyDate(){
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Лаборатории');
var datasheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Цены и сроки');
var ColumnC = sheet.getRange(2, 3, sheet.getLastRow()-1, 1); //вид работы
var cValues = ColumnC.getValues();
var ColumnD = sheet.getRange(2, 4, sheet.getLastRow()-1, 1); //исполнитель
var dValues = ColumnD.getValues();
var ColumnA = sheet.getRange(2, 1, sheet.getLastRow()-1, 1); //дата отправки
var aValues = ColumnA.getValues();
//столбец N с отметкой о завершении заказа для проверки в условии
var ColumnN = sheet.getRange(2, 14, sheet.getLastRow()-1, 1);
var nValues = ColumnN.getValues();
var cdek = 6;
var i2date = new Date();
var Ivanov = datasheet.getRange('I1').getValue(); //фамилия исполнителя
var R5 = datasheet.getRange('A2').getValue(); //вид работы
var I2 = datasheet.getRange('I2').getValue(); //соответствующее количество дней
for (var i = 0; i < aValues.length; i++) {
var aData = new Date(aValues[i][0]);
var cData = new String(cValues[i][0]);
var dData = new String(dValues[i][0]);
var nData = new String(nValues[i][0]);
if (cData == R5 && dData == Ivanov && I2!='' && nData == '') {i2date.setDate(aData.getDate()+cdek+I2);
sheet.getRange(i + 2, 11, 1, 1).setValues([[i2date]])}
else {}
}
function onEdit(event){
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Лаборатории');
var range = event.range;
if (range.getRow() >= 2 && range.getColumn() == 1){
modifyDate();
} else {}
}