Как-то так:
// Файл config.gs
const config = {};
config.onEditTrigger = {
isAllowSheetName: sheetName=>(["Лист1", "Лист2", "Лист3"].includes(sheetName)), // Лист - "Лист1", "Лист2" или "Лист23"
isAllowColumn: column=>true, // колонка - любая
isAllowRow: row=>(row>1), // строка - больше 1
isAllowNewValue: value=>true, // новое значение - любое
isAllowOldValue: value=>true, // старое значение - любое
action: (ss, sheet, range, oldValue, newValue)=>{
sheet.getRange(`A${range.getRow()}`).setValue(new Date());
},
};
// Файл onEdit.gs
function onEditTrigger(event) { // переименовать onEditTrigger в onEdit, если хватит simple триггера. Если нужен полноценный триггер - установить триггер на редактирование на эу функцию
let conf = config.onEditTrigger;
let ss = SpreadsheetApp.getActiveSpreadsheet();
let sourceSheet = event.source.getActiveSheet();
let row = event.range.getRow();
let col = event.range.getColumn();
let newValue = event.value;
let oldValue = event.oldValue;
if(
conf.isAllowColumn(col) &&
conf.isAllowRow(row) &&
conf.isAllowNewValue(newValue) &&
conf.isAllowOldValue(oldValue) &&
conf.isAllowSheetName(sourceSheet.getName())
){
conf.action(ss, sourceSheet, event.range, oldValue, newValue);
};
};
Подправьте конфиг под свои нужды.