onOpen sur une feuille spécifique dans AppScript

Aug 31 2020

J'ai un onOpencode d'exécution mais je veux qu'il s'exécute uniquement lorsqu'une feuille spécifique est ouverte (par exemple, à l'ouverture de Sheet1la fonction onOpen doit s'exécuter.) Est-ce que quelqu'un sait comment y parvenir?

Voici exactement ce que je veux réaliser:

  1. À l'ouverture de la feuille de calcul, vérifiez si la feuille active est sheet1. Dans le cas où il s'agit alors d'exécuter une condition dans cette feuille, comme indiqué ci-dessous:
onOpen()
{
    //If the active sheet is "Sheet1" then perform this:
    //Sheet Execution comes here.
}

Mais voici le problème avec la déclaration ci-dessus:

onOpen ne vérifiera qu'une fois la feuille ouverte. Je veux le vérifier chaque fois que la feuille active est "Sheet1". Ainsi, par exemple, initialement l'utilisateur ouvre la feuille de calcul, il atterrit sur "Sheet1". Maintenant, la condition est vérifiée et la sortie est affichée, mais que se passe-t-il si l'utilisateur change l'onglet pour dire "Sheet2" et revient ensuite à "Sheet1". Dans ce cas onOpen(), ne s'exécutera pas. Je souhaite effectuer ma vérification à chaque fois que l'utilisateur atterrit ou passe à "Sheet1".

Voici maintenant un autre scénario:

en utilisant onSelectionChange:

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

Maintenant, cela fonctionnera à chaque fois que l'utilisateur passe à "Sheet1", mais voici le problème, même si l'utilisateur bascule vers différentes cellules dans "Sheet1" onSelectionChangesera déclenché, ce qui est encore quelque chose de indésirable. Tout ce que je souhaite, c'est de déclencher la fonction uniquement à chaque fois que l'onglet / la feuille est changé en «Sheet1» et pas seulement lorsque la feuille de calcul est ouverte ou qu'une cellule de sélection est modifiée.

Réponses

2 Marios Aug 31 2020 at 17:49

Explication:

Pour exécuter un bloc de code à l'intérieur de la onOpenfonction uniquement lorsque vous ouvrez le fichier de feuille de calcul à partir de Sheet1, vous pouvez créer la condition if suivante:

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

Inconvénient:

La fonction onOpen n'est exécutée que lorsque vous ouvrez le fichier de feuille de calcul . Vous ne pouvez pas simplement basculer entre les feuilles et vous attendre à ce que onOpen fonctionne.


Solution:

Pour exécuter un code lors du passage d'une feuille à l'autre, vous pouvez utiliser à la place onSelectionChange(e). L'exemple suivant définit la valeur de la cellule A1 de Sheet1 lorsque vous passez d'une feuille différente à Sheet1 :

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

Et voici un modèle de code général pour exécuter un code lors du passage à Sheet1 :

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

Références:

  • onOpen (e)
  • onSelectionChange (e)