Ошибка в работе скрипта, вставляющего автоматически дату/время изменения ячейки, в соседнюю ячейку

Пробую работать со скриптом, приведенным в посте:

Дата изменения/добавления строки в google tables

К сожалению, скрипт работает не корректно. Я использую этот скрипт на нескольких листах. Я модифицировал его таким образом, что проверка проходит по двум соседним столбцам (4 и 5) и, если хотя бы один из них меняется, то в соседнюю ячейку столбца справа (в данном случае - 6) вносится дата изменения.

Проблемы:

    • на первом листе скрипт отрабатывает корректно, но - на втором, третьем (и т.д.). даже, когда ничего не меняется, скрипт все время вставляет дату в первую строчку/ячейку столбца 6;
    • если, например, вы вносите подряд изменения в строки 5,6,7,8,9 а, затем, хотите удалить дату напротив одной из них (таким образом, чтобы ячейка снова стала пустой), то после удаления, дата все равно сама вставляется обратно в только что очищенную ячейку. А, вот, если вы выделите весь диапазон (ячейки с датами, в строках 5,6,7,8,9), тогда они полностью очистятся и дата не вставится сам, до тех пор, пока вы не измените содержимое ячеек (ячейки) в колонке 4 и/или 5, соответственно.

Вопросы:

    • Подскажите пожалуйста решение - как можно устранить этот баг
    • как модифицировать скрипт таким образом, чтобы он, при вводе даты, автоматически форматировал ячейку, в которую вставляется дата, беря за основу формат той ячейки, в которую вносились изменения?

Буду весьма признателен за помощь

Вот вид модифицированного мной скрипта:

var sheet = e.source.getActiveSheet();
var idCol = e.range.getColumn();
var idRow = e.range.getRow();

  // if ( sheet.getName() == '' ) //на каком листе
  //{ 
  //var tcol = 6; //столбец который нами меняется
  //var toffset = 1; //смотрим что в ближайшем столбце справа + слева -
  //var trange = 8; //где вписываем
  //}

  {
      if ( sheet.getName() == ‘Лист1’ || sheet.getName() == ‘Лист2’) //на каком листе
    var tcol = 4; //столбец который нами меняется
    var tcol2 = 5; //второй столбец который нами меняется
    var toffset = -3; //смотрим что в ближайшем столбце справа + слева -
    var trange = 6; //где вписываем
  }

  if ( idCol == tcol||tcol2) {// проверка столбца который нами меняется
var Value = e.range.offset(0, toffset).getValues(); // проверяем ячеку от указаного выше столбца
if ( Value == "" ) {

var vartoday = getDate();

sheet.getRange(idRow, trange).setValue( vartoday ); //где вписываем
}
}
}

// Returns YYYYMMDD-formatted date.
function getDate() 
  {
var today = new Date();
today.setDate(today.getDate());
//return Utilities.formatDate(today, 'PST', 'yyyy.MM.dd');
  return Utilities.formatDate(today, 'GMT+02:00', 'dd.MM.yyyy HH:mm:ss'); // формат даты времени
  } ```




Ответы (0 шт):