Этот ответ, если вы идете прямо в Google Sheet.
Я думаю, что это поможет вам двигаться в правильном направлении. Мне неясно, говорите ли вы, что поля, за которыми вы будете следить, разбросаны по всему листу, или несмежные ячейки, на которые вы ссылались, были просто примерами внутри диапазона. Если вокруг вас разбросаны ячейки, вам, вероятно, придется сделать несколько "диапазонов наблюдения", как я отмечал в коде, и проверить, что редактируемая ячейка находится внутри хотя бы одного диапазона, в противном случае вернитесь из функции.
Хочу заметить, что я не стал вдаваться в лишнюю длину, чтобы заставить эту работу поддерживать удаление всех значений из диапазона нескольких ячеек.
Кроме того, обратите внимание, что вам придется зайти в Инструменты -> Редактор скриптов в Google Sheet, а затем в Ресурсы -> Триггеры (меню может отличаться в зависимости от того, что вы делали там раньше) и добавить триггер «onEdit ()» к листу.
Тогда ваша функция будет выглядеть примерно так
function onEdit(e){
var DateCol = "K";
var DeletedColNote = "L";
var curDate = Utilities.formatDate(new Date(), "GMT-5", "MM/dd/yyyy")
var editRange = e.range;
var rowIndex = editRange.getRowIndex();
var colIndex = editRange.getColumnIndex();
// May need to set up multiple ranges like this and check all ranges if
// checked fields are not in adjacent cells
var watchRange = { // B2:G20
top : 2, // start row
bottom : 20, // end row
left : 2, // start col
right : 7 // end col
};
// Exit if we're out of range
if (rowIndex < watchRange.top || rowIndex > watchRange.bottom) return;
if (colIndex < watchRange.left || colIndex > watchRange.right) return;
var currentValue = editRange.getValue();
currentValue = currentValue.replace(/^\s+|\s+$/g,""); //"trim" kludge
if (currentValue.length == 0)
{
// Set a column to show when data was deleted
SpreadsheetApp.getActiveSheet().getRange(DeletedColNote + rowIndex).setValue("Deleted: " + curDate);
}
else
{
// Set a column to show last edit date
SpreadsheetApp.getActiveSheet().getRange(DateCol + rowIndex).setValue("Edited: " + curDate);
SpreadsheetApp.getActiveSheet().getRange(DeletedColNote + rowIndex).setValue("");
}
}