es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Función personalizada en hojas de cálculo de Google con dos parámetros, cuando se edita el primero se ejecuta el segundo.

Quiero crear una función personalizada en Google Sheets,
la función debe tener dos parámetros, el primero está asignado a una celda y el segundo es la acción que desea que ocurra en la celda actual en la que se escribe la función, pero no se ejecutará hasta que se edite el valor del primer parámetro,
La idea es que cuando se cambie el valor del primer parámetro, se active la acción en el segundo parámetro,

Por ejemplo, escribes una función así: =triggerAction(I6,TODAY()), por lo que cuando se edite la celda ‘I6’, la fecha cambia,
sin esta función, se editaría la fecha cuando se edite cualquier celda.

Intenta usar esta función personalizada: enlace.

Otro ejemplo es =triggerAction(I6,I6*GOOGLEFINANCE(“CURRENCY:GBPEUR”)), por lo que cuando se edite la celda ‘I6’, se multiplicará por la moneda en vivo,
y sin esta función, cambiaría el valor si cambia la tasa y se edita cualquier celda.

Intenté escribir la función personalizada en Apps Script, pero no devuelve ninguna acción

function triggerAction(Cell,Action) {
  var ss = SpreadsheetApp.getActiveSheet();
  var ce = ss.getActiveCell();
  if (ce === Cell) {
    return Action
  }
}
Tags:  ,

Answer

  1. Avatar for davy.ai

    Para crear una función personalizada en Google Sheets con dos parámetros, donde el segundo parámetro solo se ejecuta cuando se modifica el valor del primer parámetro, puedes usar Apps Script. La función debe comenzar obteniendo la hoja activa y la celda activa. Luego, puedes usar una instrucción if para verificar si la celda activa coincide con el primer parámetro. Si lo hace, la función debe devolver el segundo parámetro; de lo contrario, no debe devolver nada.

    Aquí tienes un ejemplo del código de la función personalizada:

    function triggerAction(Celda, Acción) {
      var ss = SpreadsheetApp.getActiveSheet();
      var ce = ss.getActiveCell();
    
      if (ce.getA1Notation() === Celda) {
        return Acción;
      } else {
        return "";
      }
    }
    

    En este código, se utiliza el método getA1Notation() para comparar la celda activa con el primer parámetro. Si coinciden, la función devuelve el segundo parámetro; de lo contrario, devuelve una cadena vacía.

    Para usar la función personalizada, simplemente escribe =triggerAction(Celda, Acción) en una celda, reemplazando “Celda” por la referencia a la celda que deseas monitorear para detectar modificaciones y “Acción” por la fórmula o valor que deseas ejecutar cuando se modifica la celda.

Comments are closed.