Здравствуйте, подскажите пожалуйста решение, что нужно дописать в скрипте, чтобы он записывая дату и писал время, округляя его до 5 минут, например 10:04 это 10:05, 10:32,это 10:35, а 10:57 это 11:00
[vba]
Код
function onEdit(e){ var sheet = SpreadsheetApp.getActiveSheet(); var range = sheet.getActiveRange(); var row = range.getRow(); // Адрес строки активной ячейки var col = range.getColumn(); var name = sheet.getName(); if (name == "Основная" && col == 10){ sheet.getRange(row, 3).setValues([[new Date()]]); //Заполняем текущую дату } };
[/vba]
Здравствуйте, подскажите пожалуйста решение, что нужно дописать в скрипте, чтобы он записывая дату и писал время, округляя его до 5 минут, например 10:04 это 10:05, 10:32,это 10:35, а 10:57 это 11:00
[vba]
Код
function onEdit(e){ var sheet = SpreadsheetApp.getActiveSheet(); var range = sheet.getActiveRange(); var row = range.getRow(); // Адрес строки активной ячейки var col = range.getColumn(); var name = sheet.getName(); if (name == "Основная" && col == 10){ sheet.getRange(row, 3).setValues([[new Date()]]); //Заполняем текущую дату } };
Т.е. надо округлить минуты вверх до ближайших 5 минут. Для этого придётся немного препарировать получаемое значение даты. Сначала выделим из даты значение минут, затем посчитаем новое округленное значение и наконец запишем новое значение минут в общее значение даты, не забыв обнулить секунды и миллисекунды. Если получится значение 60 минут, то оно нас не испугает, так как объект Date корректно обрабатывает подобные ситуациию, так что обнулять минуты и добавлять целый час самостоятельно не придётся.
Вот как надо преобразовать в скрипте фрагмент с условием: [vba]
Код
if (name == "Основная" && col == 10) { var date = new Date(); var newMinutes = Math.ceil(date.getMinutes() / 5) * 5; date.setMinutes(newMinutes, 0, 0); sheet.getRange(row, 3).setValue(date); //Заполняем текущую дату c минутами, округленными до 5 вверх }
[/vba]
Т.е. надо округлить минуты вверх до ближайших 5 минут. Для этого придётся немного препарировать получаемое значение даты. Сначала выделим из даты значение минут, затем посчитаем новое округленное значение и наконец запишем новое значение минут в общее значение даты, не забыв обнулить секунды и миллисекунды. Если получится значение 60 минут, то оно нас не испугает, так как объект Date корректно обрабатывает подобные ситуациию, так что обнулять минуты и добавлять целый час самостоятельно не придётся.
Вот как надо преобразовать в скрипте фрагмент с условием: [vba]
Код
if (name == "Основная" && col == 10) { var date = new Date(); var newMinutes = Math.ceil(date.getMinutes() / 5) * 5; date.setMinutes(newMinutes, 0, 0); sheet.getRange(row, 3).setValue(date); //Заполняем текущую дату c минутами, округленными до 5 вверх }