Tengo un código de ejecución onOpen pero quiero que se ejecute solo cuando se abre una hoja específica (por ejemplo, al abrir Sheet1, la función onOpen debería ejecutarse). ¿Alguien sabe cómo lograr esto?

Esto es exactamente lo que quiero lograr:

  1. Al abrir la hoja de cálculo, verifique si la hoja activa es sheet1. En caso de que se ejecute una condición dentro de esa hoja, como se muestra a continuación:
onOpen()
{
    //If the active sheet is "Sheet1" then perform this:
    //Sheet Execution comes here.
}

Pero aquí está el problema con la declaración anterior:

OnOpen solo comprobará una vez que se abra la hoja. Quiero comprobarlo cada vez que la hoja activa sea "Hoja1". Entonces, por ejemplo, inicialmente el usuario abre la hoja de cálculo, aterriza en "Hoja1" Ahora se verifica la condición y se muestra la salida, pero ¿qué pasa si el usuario cambia la pestaña para decir "Hoja2" y luego vuelve a "Hoja1"? En ese caso, onOpen() no se ejecutará. Quiero realizar mi comprobación cada vez que el usuario aterriza o cambia a "Hoja1".

Ahora, aquí hay otro escenario:

Usando onSelectionChange:

onSelectionCHange()
{
    //If the active sheet is "Sheet1" then perform this:
    //Sheet Execution comes here.
}

Ahora, esto funcionará cada vez que el usuario cambie a "Hoja1", pero aquí está el problema, incluso si el usuario cambia a celdas diferentes en "Hoja1", se activará onSelectionChange, lo cual nuevamente es algo no deseado. Todo lo que quiero es activar la función solo cada vez que la pestaña / hoja se cambie a "Hoja1" y no solo cuando se abra la hoja de cálculo o se cambie cualquier celda de selección.

1
Shivam Sahil 31 ago. 2020 a las 13:27

1 respuesta

La mejor respuesta

Explicación:

Para ejecutar un bloque de código dentro de la función onOpen solo cuando abre el archivo de hoja de cálculo desde Hoja1 , puede construir la siguiente condición if:

function onOpen(e) {
const as = e.source.getActiveSheet().getName();
  if (as == 'Sheet1'){
//code you want to be executed when you open the spreadsheet from Sheet1
}
}

Retirarse:

La función onOpen solo se ejecuta cuando abre el archivo de hoja de cálculo . No puede simplemente cambiar entre hojas y esperar que onOpen funcione.


Solución:

Para ejecutar un código al cambiar entre diferentes hojas, puede usar onSelectionChange(e). El siguiente ejemplo establece el valor de la celda A1 de Hoja1 cuando cambia de una hoja diferente a Hoja1 :

function onSelectionChange(e) {
  
const as = e.source.getActiveSheet();
  if (as.getName() == 'Sheet1'){ 
    as.getRange('A1').setValue("This is Sheet1");
  }
}

Y aquí hay una plantilla de código general para ejecutar un código al cambiar a Hoja1 :

  function onSelectionChange(e) {
      
    const as = e.source.getActiveSheet();
      if (as.getName() == 'Sheet1'){ 
        // put your code here
      }
    }

Referencias:

2
Mario 31 ago. 2020 a las 13:33