IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

APIs Google Discussion :

Exécuter une fonction en cliquant sur une feuille


Sujet :

APIs Google

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2007
    Messages : 5
    Points : 5
    Points
    5
    Par défaut Exécuter une fonction en cliquant sur une feuille
    Bonjour,

    Dans Google Sheet, je souhaite exécuter une fonction javascript à chaque fois qu'on clique sur un onglet, un peu à la manière des déclencheurs (qui n'ont l'air d'exister que sur les feuilles entières (ouverture, modification...).

    Comment faire ?
    Merci pour vos idées

  2. #2
    Membre confirmé

    Homme Profil pro
    Chomeur
    Inscrit en
    Juin 2006
    Messages
    347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Chomeur

    Informations forums :
    Inscription : Juin 2006
    Messages : 347
    Points : 452
    Points
    452
    Par défaut
    Bonjour,

    A ma connaissance, il n'existe pas de déclencheur "prêt à l'usage" lors du changement de feuille active.

    Quelle est la finalité? Peut-être est il possible d'envisager l'attendu sous un autre angle ?

    Bon courage

  3. #3
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 070
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 070
    Points : 44 677
    Points
    44 677
    Par défaut
    Bonjour,
    peut être regarder du côté de la Class SpreadsheetTriggerBuilder !

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2007
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    Merci, c'est intéressant, je ne connaissais pas.

    J'ai trouvé une autre solution, avec un déclencheur horaires toutes les minutes, sur la fonction timedEventHandler():
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    var PROP_NAME = "lastSheetIdx";
    var userProperties = PropertiesService.getUserProperties();
     
    function didSwitchSheets(from, to) {
      Logger.log("Switched from " + from + " to " + to);
      // Your code here
    }
     
    function timedEventHandler() {
      var currentSheetIdx = SpreadsheetApp.getActiveSheet().getIndex()
      var previousSheetIdx = parseInt(userProperties.getProperty(PROP_NAME));
      if (currentSheetIdx !== previousSheetIdx) {
        didSwitchSheets(previousSheetIdx, currentSheetIdx);
        userProperties.setProperty(PROP_NAME, currentSheetIdx);
      }
    }
    En attendant que Google ajoute un déclencheur sur les onglets....

  5. #5
    Membre confirmé

    Homme Profil pro
    Chomeur
    Inscrit en
    Juin 2006
    Messages
    347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Chomeur

    Informations forums :
    Inscription : Juin 2006
    Messages : 347
    Points : 452
    Points
    452
    Par défaut
    Concernant la classe "SpreadsheetTriggerBuilder", elle n'offre malheureusement pas plus d'options que les triggers "prêt à l'usage".

    Personnellement, j'éviterai la solution avec déclenchement à chaque minute car elle est très aléatoire et consommatrice de "CPU" !
    Si l'utilisateur passe sur une autre feuille pendant seulement 45 secondes, elle ne déclenchera pas les actions attendues car au moment du contrôle l'utilisateur sera retourné sur l'onglet de départ. A l'inverse, si l'utilisateur reste bien sur une autre feuille, elle va déclencher des actions plusieurs secondes après le changement de page (particulièrement perturbant selon les actions à traiter...). Pour résumer, elle ne garantit ni que les actions attendues seront exécutées, ni à quel moment elles le seront !
    J'ajoute que ces traitements de contrôle à chaque minute sont "couteux" d'un point de vue "temps de traitement machine". Or ce temps est décompté par Google et limité par jour/semaine (limite + ou - élevée selon type de compte) : il est donc tout à fait possible que certains jours, ou certaines semaines, Google considère que le temps traitement imparti est dépassé et que plus aucun autre script ne sera exécuté pendant x minutes/heures...

    Si les actions à déclencher ne sont pas nécessaires, pourquoi ne pas s'en passer ? Ou alors, il faut revoir le besoin...
    Bon courage

    PS : Chez Google ils se sont surement demandé si un tel déclencheur aurait une utilité et si il n'existe pas déjà, je suggère de ne pas l'attendre !

Discussions similaires

  1. appel d'une fonction en cliquant sur un bouton
    Par om_fanatics dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 22/04/2009, 09h56
  2. deux fonctions en cliquant sur un bouton
    Par paolo2002 dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 21/01/2008, 12h26
  3. appel d'une fonction en cliquant sur un lien
    Par pazaroti dans le forum Servlets/JSP
    Réponses: 11
    Dernier message: 17/04/2007, 13h20
  4. déclenchement d'une Fonction Java en cliquant sur un bouton
    Par dracula2000 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 31/03/2006, 11h34
  5. [VB.NET] Exécuter une fonction VB sur un Datagrid
    Par MiJack dans le forum Windows Forms
    Réponses: 3
    Dernier message: 24/09/2004, 14h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo