Ошибка в работе скрипта, вставляющего автоматически дату/время изменения ячейки, в соседнюю ячейку
Пробую работать со скриптом, приведенным в посте:
Дата изменения/добавления строки в 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'); // формат даты времени
} ```