Estoy usando un script en Hojas de cálculo de Google que crea una marca de tiempo en una celda cuando se establece el valor de la celda contigua. Borra la fecha si se borra el valor de la celda de al lado.
Sin embargo, está afectando a toda la hoja. Solo quiero que este código funcione a partir de la fila 18.
Soy muy nuevo en la codificación. He investigado un poco, pero todavía no puedo resolverlo. Tengo una variable definida llamada StartRow e intenté usarla en mi instrucción if y luego en mi ciclo en lugar de "e.range.rowStart" , pero activó la fecha varias veces hacia arriba.
¿Puede alguien darme su opinión sobre lo que debo cambiar o agregar? ¡Gracias por adelantado!
Aquí está el código que estoy usando:
function onEdit(e) { var sheet = ["Sheet1"]; var ss = SpreadsheetApp.getActiveSheet(); var StartRow = 18; //(defined but not sure where or if I should use it) var InputCol = 6; var OutputCol = 7; if (sheet.indexOf(ss.getName()) == -1 || e.range.columnStart != InputCol) return; var val = ss.getRange(e.range.rowStart, e.range.columnStart).getValue(); if (val) { var date = new Date(); for (var i = e.range.rowStart; i <= e.range.getLastRow(); i++) ss.getRange(i, OutputCol).setValue(date); } else ss.getRange(e.range.rowStart, OutputCol, e.range.getLastRow() - e.range.rowStart + 1).clearContent(); }Prueba esto:
function onEdit(e) { //e.source.toast('entry'); const sh = e.range.getSheet(); if (sh.getName() == 'Sheet1' && e.range.rowStart > 18 && e.range.columnStart == 6) { if (e.value) { e.range.offset(0, 1).setValue(new Date()); } else { e.range.offset(0, 1).setValue(''); } } }