onOpen em folha específica no AppScript

Aug 31 2020

Eu tenho um onOpencódigo de execução, mas quero executá-lo apenas quando uma folha específica é aberta (por exemplo, ao abrir Sheet1a função onOpen deve ser executada.) Alguém sabe como fazer isso?

Aqui está exatamente o que eu quero alcançar:

  1. Ao abrir a planilha, verifique se a planilha ativa é a planilha1. Caso seja então executar uma condição dentro dessa planilha, conforme mostrado abaixo:
onOpen()
{
    //If the active sheet is "Sheet1" then perform this:
    //Sheet Execution comes here.
}

Mas aqui está o problema com a afirmação acima:

onOpen verificará apenas quando a folha for aberta. Quero verificar sempre que a planilha ativa for "Plan1". Assim, por exemplo, inicialmente o usuário abre a planilha, ele chega à "Planilha1" Agora a condição é verificada e a saída é exibida, mas e se o usuário alterar a guia para "Planilha2" e depois voltar para "Planilha1". Nesse caso onOpen(), não será executado. Desejo realizar minha verificação toda vez que o usuário pousa ou muda para "Folha1".

Agora aqui está outro cenário:

usando onSelectionChange:

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

Agora isso funcionará toda vez que o usuário alternar para "Planilha1", mas aqui está o problema, mesmo se o usuário alternar para células diferentes na "Planilha1" onSelectionChangeserá acionado, o que novamente é algo indesejado. Tudo que eu quero é apenas acionar a função cada vez que a guia / planilha for alterada para "Planilha1" e não apenas quando a planilha for aberta ou qualquer célula de seleção for alterada.

Respostas

2 Marios Aug 31 2020 at 17:49

Explicação:

Para executar um bloco de código dentro da onOpenfunção única quando você abre o arquivo de planilha de Sheet1 , em seguida, você pode construir o seguinte se condição:

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
}
}

Recua:

A função onOpen só é executada quando você abre o arquivo de planilha . Você não pode simplesmente alternar entre as planilhas e esperar que o onOpen funcione.


Solução:

Para executar um código ao alternar entre folhas diferentes, você pode usar onSelectionChange(e). O exemplo a seguir define o valor da célula A1 da Folha1 quando você muda de uma folha diferente para a Folha1 :

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

E aqui está um modelo de código geral para executar um código ao alternar para a Planilha1 :

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

Referências:

  • onOpen (e)
  • onSelectionChange (e)