Estoy escribiendo un script que toma 2 fechas (fecha de inicio y finalización), crea nuevas columnas para cada semana entre las dos fechas, luego completa automáticamente el inicio de cada semana en el encabezado de las nuevas columnas en una hoja llamada ' Línea de tiempo y finanzas'. La función se llama nm() .
Estoy usando la función onEdit para activar el script cuando cambia la fecha de inicio (celda W1) o la fecha de finalización (celda X1) en 'Cronología y finanzas'.
Se supone que los usuarios no deben editar las celdas W1 o X1 manualmente. Esas celdas están vinculadas a celdas en otra pestaña llamada 'Recurso(s)' en la misma hoja de cálculo mediante la función =MIN('Resource(s)' !G2:G900) y =MAX('Reousrce(s)' !H2:H900) Para aclarar, W1 y X1 en 'Cronología y finanzas' contienen la función mínima y máxima
Mi objetivo es que los usuarios editen la pestaña 'Recurso(s)' que cambiará W1 o X1 en 'Cronología y finanzas' y luego activará la función que crea las columnas.
Mi problema es encontrar una manera para que onEdit reconozca cuándo se ha cambiado una celda y luego active el script.
Encontré 2 soluciones para especificar qué celdas se deben editar para activar, pero cada una tiene problemas:
Solución 1:
La función se activa con éxito cuando W1 o X1 se actualizan debido a un cambio en la hoja de 'Recurso(s) pero involuntariamente ejecuta el script cuando se cambia cualquier celda en 'Cronología y finanzas'.
¿Cómo puedo limitar el activador solo a W1 o X1 usando esta solución? ¿Estoy malinterpretando el uso de .getA1Notation() ?
Solución 2
La función solo se activará con éxito si el usuario ingresa y escribe manualmente las fechas en W1 o X1, no cuando 'Recurso(s)' actualice W1 o X1.
Supongo que esta solución solo verifica la función en la celda ( =MIN('Resource(s)' !G2:G900) y =MAX('Reousrce(s)' !H2:H900) ) en lugar del valor en el celda (las fechas reales)
¿Hay alguna manera de que el script busque una edición en el valor de una celda en lugar de un cambio de una función?
El código está abajo:
function onEdit(e){ var template = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Timeline & Financials"); var startDate = "V3"; var endDate = "V4"; // Solution 1 // if (e.range.getA1Notation() == startDate || e.range.getA1Notation() == endDate ){ // console.log("in if"); // return; // } else { // deleteColumns(); // nm(); // } // Solution 2 // if (e.range.rowStart != 1 || !(e.range.columnStart >= 23 && e.range.columnStart < 25) ){ // console.log("in if"); // return; // } else { // // deleteColumns(); // // nm(); // } } ```