@lifeo311

Как настроить подставление текущей даты, при заполнении соседней ячейки на несколько столбцов?

Есть макрос, который вписывает в столбец 6 текущую дату, когда что-то вводится в столбце 5. Как сделать, чтобы тоже самое работало отдельно для столбцов 5-6, 7-8, 10-11, 13-14, 16-17

5 — вводим какие-то данные, в 6 появляется дата на момент редактирования
7 — вводим какие-то данные, в 8 появляется дата на момент редактирования

и так далее

function onEdit(e) {
  var sheet = e.source.getActiveSheet();
  var idCol = e.range.getColumn();
  var idRow = e.range.getRow();
  if (idCol == 5 && sheet.getName() == 'Лист1') {
    var Value = e.range.offset(0, +2).getValues();
    if (Value == "") {
      var vartoday = getDate();
      sheet.getRange(idRow, 6).setValue(vartoday);
    }
  }
}

// Returns YYYYMMDD-formatted date.
function getDate() {
  var today = new Date();
  today.setDate(today.getDate());
  //return Utilities.formatDate(today, 'PST', 'dd.MM.yyyy');
  return Utilities.formatDate(today, 'GMT+03:00', 'dd.MM.yyyy');
}
  • Вопрос задан
  • 200 просмотров
Решения вопроса 1
oshliaer
@oshliaer Куратор тега Google Sheets
Google Products Expert
К сожалению, ваш код мне не удалось понять. Попробуйте применить вот это к своему условию. Т.е. вам нужно применить свое if ( Value == "" ) { к решению ниже

var COLUMNS = [5,7,10,13,16]; // Колонки, которые редактируются

function onEdit(e) {
  var sheet = e.range.getSheet();
  var idCol = e.range.getColumn();
  // Мы на нужном листе и на нужной колонке?
  if ( COLUMNS.indexOf(idCol) > -1 && sheet.getName() =='Лист1' ) {
    e.range.offset(0, 1).setValue( new Date() );
  }
}


Некоторые части кода совершенно непонятны, например,
  • .offset(0, +2) ???
  • getDate(); - Зачем это вообще?
  • sheet.getRange(idRow, 6).setValue( vartoday ); Чем тут offset не угодил?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы