Les déclencheurs dans Google Sheets script

1
2426

Bonjour et bienvenue dans cette partie de notre série de Google apps script où nous allons voir comment fonctionnent les déclencheurs (Trigger). nous allons aussi voir qu’il est possible d’avoir des déclencheurs basé sur le temps qui permet d’exécuter notre script même si le fichier n’est pas ouvert.

C’est quoi un déclencheur ?

Alors un déclencheur ou plus connu sous le nom anglais “trigger” permet d’exécuter une fonction automatiquement après un certain événement, comme modifier une cellule, ouvrir un document ou en recevant une requête HTTPS.

Déclencheur à l’ouverture

Pour commencer nous allons voir comment fonctionne le déclencheur à l’ouverture du fichier. Pour cela nous allons dans notre éditeur de code et nous allons devoir créer une fonction qui doit se nommer exactement onOpen. 

Il est important que le nom de la fonction soit exacte car à l’ouverture du fichier, Google Sheets va chercher s’il y a une fonction qui comporte le nom onOpen, si la fonction est trouver Google Sheets sait qu’il doit exécuter cette fonction à l’ouverture.

function onOpen(){
  SpreadsheetApp.getActive().getRange('A1').setValue(new Date());
}

Déclencheur à changement de sélection

Si nous voulons exécuter une fonction au moment qu’on change la sélection nous allons devoir utiliser la fonction onSelectionChange. Ici dans notre exemple nous allons indiquer dans la console la cellule que nous avons sélectionné.

Remarque importante après avoir créé la fonction il faut fermer et ouvrir votre fichier google sheets.

function onSelectionChange(event){
  console.log(event.range.getA1Notation());
}

Déclencheur au changement de valeur dans une cellule

Désormais nous allons voir que le déclencheur le plus utilisé est celui qui va exécuter une logique quand on modifie la valeur dans une cellule, pour cela nous allons utiliser la fonction onEdit.

Dans notre exemple nous allons créer une validation d’adresse email où nous allons rendre la couleur de fond en roze si l’email n’est pas valide. 

function onEdit(data){

  if(data.range.getSheet().getName() =='Feuille 1' &&  data.range.getA1Notation() == 'C4'){

    let isValid = emailValidation(data.range.getValue());

      if(isValid){
        data.range.setBackground('white');
      }else{
        data.range.setBackground('pink');
      }
  }
}

function emailValidation(email){

  let mailformat = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;

  if(email.match(mailformat)){
   return true;
  }else{
    return false;
  }
}

Déclencheurs basé sur le temps

Et pour terminer cette vidéo nous allons voir comment créer un Déclencher basé sur le temps. c’est-à-dire que nous allons créer une fonction qui va incrémenter par 1 la valeur de la cellule A2 toutes les minutes.

Pour cela nous devons créer notre fonction

function incrementby1(){
 let range = SpreadsheetApp.getActive().getRange('A2');

 let rangeValue = range.getValue();
 range.setValue(++rangeValue);
}

Nous avons notre fonction, il est temps de créer un déclencheur pour qu’il exécute notre fonction toutes les minutes. Pour cela il faut aller dans l’éditeur de code puis dans le menu on sélectionne déclencher puis on crée un nouveau déclencheur.

Et voilà désormais notre fonction sera exécutée toutes les minutes même si le fichier n’est pas ouvert. 

j’espère que ces informations vous seront utiles et si vous avez des questions n’hésitez pas à les poser dans les commentaires.

1 COMMENTAIRE

  1. Bonjour,
    Je suis intéressé par les déclencheurs et notamment par l’ utilisation simultanée de 2 touches (CTRL et une autre).
    J’ utilise cette combinaison à ce jour pour faire la chose suivante:
    Je suis sur une feuille (Lotus 123 sur ne pas le nommer) dans laquelle j’ ai mes comptes.
    Pour me synchroniser avec la banque j’utilise une macro que je déclenche par CTRL et la touche D du clavier.
    Je positionne mon curseur sur une cellule qui contient une valeur numérique positive ou négative .
    Lorsque j’ appuie sur CTRL +A la valeur de la cellule change de signe et la couleur de fond change également.
    Je ne sais pas réaliser cela sous sheets.
    Pensez vous pouvoir m’aider?
    Merci par avance.
    Bonne Journér
    LeBaud

LAISSER UN COMMENTAIRE

Please enter your comment!
Please enter your name here

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.