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 :

Couleur assignée aux adresses courriel non prise en compte [Google Sheets]


Sujet :

APIs Google

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Lycéen
    Inscrit en
    Mars 2019
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Mars 2019
    Messages : 8
    Points : 5
    Points
    5
    Par défaut Couleur assignée aux adresses courriel non prise en compte
    Bonjour! J'ai besoin d'aide avec mon script.

    Chaque adresse courriel a une couleur d'assignée. La fonction marche avec mon compte (j'écris avec la couleur programme).

    MAIS la fonction ne marche pas avec les autres utilisateurs (ils écrivent de leur noir) du document sheet partager. Tous les utilisateurs ont autorisé le script et ils voient la couleur (programme) quand j'écris.

    Avez-vous une idée de comment régler tout sa? Merci!

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    function onEdit(e) {
     
      var ActiveSheet = SpreadsheetApp.getActiveSheet();
      var ActiveRow = ActiveSheet.getActiveRange().getRow();
      var ActiveCell = ActiveSheet.getActiveCell();
      var email = Session.getActiveUser().getEmail();
     
      if (email == "a@gmail.com"){
        ActiveCell.setFontColor("#ff0066");
      }
     
      if (email == "b@gmail.com"){
        ActiveCell.setFontColor("#e36c09");
      }
     
    if (email == "c@gmail.com"){
        ActiveCell.setFontColor("#0928bf");
      }
     
      if (email == "d@gmail.com"){
        ActiveCell.setFontColor("#9a26a2");
      }
     
    if (email == "e@gmail.com"){
        ActiveCell.setFontColor("#9a26a2");}
      }

  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,

    La fonction semble correcte.
    Est ce qu'il ne pourrait pas s'agir d'un problème de déclenchement, ou de détermination du user connecté. Une solution pour vérifier cela serait d'ajouter une trace, par exemple en inscrivant la valeur de "email" ( Logger.log(email); ) afin de confirmer que le script se déclenche bien à chaque édition pour tout le monde, et que l'adresse mail obtenue est correcte.

    Bon courage
    Signature à venir...
    Ancienne : Divers NTIC (PHP, Dojo, à venir...) : http://tif44.fr/blog/

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Lycéen
    Inscrit en
    Mars 2019
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Mars 2019
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Salut!
    J'ai ajouté :
    Je ne suis pas 100% sur que je l'ai bien ajouté. J'ai fais run la function et tout va bien.
    J'ai une precision de plus maintenant (je travail depuis quelque temps sur ce script) : Les autres users, lorsqu'il click le bouton 'run' OnEdit va fonctionner dans la cellule ou ils sont présentement actif (écrive de la bonne couleur). MAIS lorsqu'ils changent de cellule, OnEdit ne semble pas se déclancher (ils écrivent en noir). J'ai aucune idée de pourquoi sa ne marche pas! Il y a peu-être un problème lorsque le document est partager? (La function run sans problème avec le créateur du document).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    function onEdit(e) {
     
      Logger.log("email");
      var ActiveSheet = SpreadsheetApp.getActiveSheet();
      var ActiveRow = ActiveSheet.getActiveRange().getRow();
      var ActiveCell = ActiveSheet.getActiveCell();
      var email = Session.getActiveUser().getEmail();
     
     
      if (email == "a@gmail.com"){
        ActiveCell.setFontColor("#ff0066");
      }}

  4. #4
    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
    Re,

    Je pensai plus à tracer la valeur de la variable "email" pour confirmation qu'elle est correctement valorisée même pour les autres utilisateurs (et que donc les "if" sont satisfaits et la couleur modifiée). Un autre contrôle pourrait être de tracer la couleur obtenue pour la cellule en fin de fonction, par ex "Logger.log(ActiveCell.getFontColor());"
    Les traces se consultent ensuite depuis le script "Afficher" puis "Journaux" (seule la trace de la dernière exécution est proposée). Il est aussi intéressant de vérifier les traces d'exécution dans "Afficher" puis "Script d'exécution" : si une erreur a été rencontrée, des éléments d'analyse seront présents à cet endroit.

    Après un test simple avec 2 user et exactement le même code, cela semble fonctionner. Par contre, le script a un temps d'exécution et la couleur de la cellule qui vient d'être modifiée est parfois mise à jour seulement quelques secondes plus tard (cela peut être pire si plusieurs utilisateurs simultanés!) : est ce qu'il serait possible que cette "lenteur" ait laissé penser aux utilisateurs que la couleur n'était pas mise à jour ?

    Sinon cela vient peut-être du déclencheur ? Comment est il défini ? (d'ailleurs, je n'ai pas bien compris l'histoire du bouton "run"..?)
    Pour mon test, j'ai choisi un déclencheur sur évènement : "Basé sur la feuille de calcul - Lors d'une modification"

    nb : il me semble que "ActiveRow" n'est pas utile et peut être supprimé, et par convention les noms de variable js commencent par une minuscule (malgré ce qui était indiqué dans le script copié sur internet ;-) )
    Signature à venir...
    Ancienne : Divers NTIC (PHP, Dojo, à venir...) : http://tif44.fr/blog/

  5. #5
    Futur Membre du Club
    Femme Profil pro
    Lycéen
    Inscrit en
    Mars 2019
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Mars 2019
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Salut! merci pour ta réponse.

    J'ai fais les 2 tests et tout semble beau quand je vais voir dans journaux et script d'exécution.

    Je ne suis pas certaine de saisir ton déclancheur sur évênement. Comment tu l'écris? As-tu un exemple?

    Et oui, j'ai pris un script sur Internet, je ne m'y connais pas trop en Javascript!

  6. #6
    Futur Membre du Club
    Femme Profil pro
    Lycéen
    Inscrit en
    Mars 2019
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Mars 2019
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    J'ai rajouté cela : Mais j'ai l'impression que c'est mal écrit?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    function onEdit(e) {
     
      // Based on spredsheet;when editing.
     
      var ActiveSheet = SpreadsheetApp.getActiveSheet();
      var ActiveCell = ActiveSheet.getActiveCell();
      var email = Session.getActiveUser().getEmail();
     
     
      if (email == "sanitation.1laiterieoutaouais@gmail.com"){
        ActiveCell.setFontColor("#ff0066");
      }}

  7. #7
    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
    Salut,

    Voici quelques explications, mais cela n'explique pas vraiment le problème :-(

    Il existe différentes façons de déclencher l'exécution d'un script/méthode/fonction GAS, par exemple : un bouton à cliquer dans le spreadsheet, associer une case à une fonction (=maFonction() ), ou encore exécuter le script depuis l'éditeur. C'est peut-être l'un de ces mécanismes qui a été utilisé ? (Je reste intrigué par la phrase "lorsqu'il click le bouton 'run'"...).
    Mais il existe aussi des déclencheurs (trigger) "pré-construits" (cf. https://developers.google.com/apps-s...ides/triggers/). Ici la fonction "onEdit" correspond à une "facilité" proposée par Google pour un déclenchement automatique à chaque édition. Mais il est possible aussi de déclencher n'importe quelle fonction en positionnant un trigger dessus. Pour cela il faut aller dans "Edition" puis "Declencheurs du projet actuel", et dans le nouvel écran cliquer sur "Ajouter un déclencheur". C'est le test que j'avais fait, et je l'avais paramétré comme suit :
    Nom : GAS_Trigger.png
Affichages : 149
Taille : 31,4 Ko

    Cette façon de positionner le déclencheur mérite peut-être d'être testée, mais je crains que ce ne soit pas la cause du problème car en théorie elle devrait être strictement équivalente à l'utilisation du "onEdit". J'ai vérifié en testant avec un simple "onEdit" à la place du trigger, et j'obtiens toujours le résultat souhaité (avec 2 user)...

    A noter qu'en utilisant "onEdit", il est possible de s'appuyer sur "l'event" pour simplifier le code (jai ajouté un Logger pour contrôle du user connecté) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    function onEdit(e) {
      var email = Session.getActiveUser().getEmail();
      Logger.log('user ' + email + ' a modifié la feuille à ' + new Date()); 
      if (email == "sanitation.1laiterieoutaouais@gmail.com"){
        e.range.setFontColor("#ff0066");
      }
    }
    Il pourrait être intéressant de vérifier avec un collègue que, lorsqu'il utilise la spreadsheet, c'est bien son email qui apparait dans les journaux d'exécution du script. Il est aussi possible de contrôler le test de comparaison en l'ajoutant dans le logger, par exemple "Logger.log('user ' + email + ' est comparé à sanitation.1laiterieoutaouais@gmail.com, et le résultat est ' + (email == "sanitation.1laiterieoutaouais@gmail.com"))"

    Mis à part ces quelques vérifications, je ne vois pas ce qui pourrait provoquer le dysfonctionnement... Il existe bien quelques restrictions Google mais il est assez peu probable qu'elles aient été rencontrées (sauf si >25 utilisateurs simultanés sur la spreadsheet ? ou si la spreadsheet est très lourde avec des dizaines de milliers de lignes et de nombreux onglets ?). N'hésites pas à faire un retour, même si c'est pour confirmer que la solution n'est pas trouvée, car d'autres auront peut-être d'autres propositions.
    Bon courage
    Signature à venir...
    Ancienne : Divers NTIC (PHP, Dojo, à venir...) : http://tif44.fr/blog/

  8. #8
    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
    Re !

    Je me suis replongé rapidement dans la doc Google, en particulier les deux pages suivante https://developers.google.com/apps-s.../#restrictions et https://developers.google.com/apps-s...etActiveUser() dont voici des extraits :
    They may or may not be able to determine the identity of the current user, depending on a complex set of security restrictions.
    The circumstances in which the email address is available vary: for example, the user's email address is not available in any context that allows a script to run without that user's authorization, like a simple onOpen(e) or onEdit(e) trigger ... However, these restrictions generally do not apply if the developer runs the script themselves or belongs to the same G Suite domain
    Or j'utilise des comptes appartenant au même domaine "G suite" ce qui pourrait expliquer que je ne reproduise pas le problème (à l'exécution l'email user est trouvé comme attendu alors qu'il ne l'aurait peut-être pas été sans cette spécificité).

    Néanmoins, les propositions de mon précédent msg restent d'actualité :
    - il faut contrôler l'email utilisateur pour en savoir plus : d'après la doc, il est possible que celui-ci reste vide (""), ce qui expliquerait que rien ne se passe.
    - il est possible que la mise en place d'un trigger "installable" force les mécanismes d'autorisation et permette d'obtenir l'email correctement donc à tester
    - une dernière hypothèse serait d'ajouter dans le code, sans jamais l'utiliser ou en empêchant l'effet, une fonction impliquant une autorisation forte, par exemple un envoi de mail. A la première utilisation, les utilisateurs seraient, à priori, amenés à accepter les conditions Google (prompt qui précise que leur identité est contrôlée), mais ensuite cela devrait permettre d'obtenir les emails comme souhaité... Par ex en ajoutant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
      // Soit action jamais appelé car bloqué par condition
      if(false){ MailApp.sendEmail("", "", ""); }
     
      // Soit action en erreur et interceptée
      try { MailApp.sendEmail("", "", ""); 
      } catch(exc) { Logger.log('fail'); }
    Bon courage
    Signature à venir...
    Ancienne : Divers NTIC (PHP, Dojo, à venir...) : http://tif44.fr/blog/

  9. #9
    Futur Membre du Club
    Femme Profil pro
    Lycéen
    Inscrit en
    Mars 2019
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Mars 2019
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Hey!

    Mon interface est en anglais, le bouton 'run' = exécuter la fonction manuellement. Lorsque l'autre user clique le bouton, OnEdit fonctionne dans la cellule active, mais lorsque l'utilisateur change de cellule..l'écriture devient noir. (OnEdit ne semble pas runer). Il y a 6 utilisateurs dans ce document et 10 feuilles de calcul.

    Merci pour l'explication du déclancheur (trigger), j'avais deja essayer d'en installer un = aucun changemetn pour mon problème.

    J'ai modifier le script comme tu m'as proposé, mais toujours aucun succès. Lorsque je regarde dans 'historique' et 'script d'exécution' le résultat et le même pour mon compte et celui de l'autre user. Comment je sais si je suis dans le même G suit domaine? x)

    Merci beaucoup pour tes réponses, ca me casse la tête tout ca!

    Donc, tu as fais un test dans ton document et sa la marché avec ton compte et celui d'un autre user?

  10. #10
    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
    Salut,

    Une petite précision : il n'est pas possible de changer la couleur d'écriture pour toute la session d'un user! L'objet du script est de changer, à chaque modification, le contenu de(s) cellule(s) modifiée(s).
    Exécuter la fonction en cliquant sur un bouton n'a donc pas de sens ici (le user ne va pas cliquer après chaque modification). Elle doit se déclencher automatiquement lorsque l'utilisateur manipule les données sur la feuille...

    Lorsque je regarde dans 'historique' et 'script d'exécution' le résultat est le même pour mon compte et celui de l'autre user
    En théorie, si un logger sur "email" a été positionné, les journaux devraient mettre en évidence deux adresses mails différentes, ou le fait que l'une des deux n'ait pas pu être récupérée. Ce constat semble donc improbable... Et j'en reviens de nouveau aux questions déjà posées dans mon premier msg : est ce que les emails des utilisateurs sont correctement déterminés ? Est ce que le déclenchement de la fonction est correcte (doit s'exécuter après chaque modification de valeur dans une ou plusieurs cellules) ?

    Concernant le domaine G suite, il s'agit de fonctionnalités payantes. L'administrateur de l'organisation devrait avoir la réponse, mais compte tenu des adresses mail en "@gmail.com", je soupçonne que se ne soit pas le cas (sinon il y aurait probablement un nom de domaine spécifique comme "@laiterieoutaouais.com").

    Et oui, je confirme que j'ai testé le code fourni, et cela fonctionne comme attendu avec deux comptes appartenant au même domaine G suite (dans un spreadsheet quasi vide, et avec un temps de latence)...
    Signature à venir...
    Ancienne : Divers NTIC (PHP, Dojo, à venir...) : http://tif44.fr/blog/

  11. #11
    Futur Membre du Club
    Femme Profil pro
    Lycéen
    Inscrit en
    Mars 2019
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Mars 2019
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Je pense que je n'ai pas été assé claire. Je sais que je ne peux pas changer sa couleur pour toute sa session. Je veux seulement pour un document. Pour préciser : la fonction se déclanche automatiquement pour moi (créateur du document et du script). La fonction ne se déclanche pas automatiquement pour l'autre user. (par contre, elle se déclanche lorsque j'excute le script manuellement). Et oui, il faut que sa soit automatique!

    Avec mon compte, le script s'execute de manière automatique et je vois la bonne adresse courriel dans l'historique. Pour l'autre utilisateur, le script semble se déclancher automatiquement, mais lorsque je vais voir dans l'historique, il n'y a pas son adresse courriel. = Le scrpit ne va pas chercher l'adresse courriel de l'autre user? Pourtant, la ligne est écrite de la même facon.

    est ce que les emails des utilisateurs sont correctement déterminés ? Est ce que le déclenchement de la fonction est correcte

    Correctement déterminés, tu fais référence a comment la ligne est écrit?

    Est-ce que c'est possible que la fonction marche seulement sur le même domaine G suite?

  12. #12
    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
    Désolé, je n'ai pas été très clair non plus...

    J'ai refais quelques tests, cette fois avec un compte "normal" (pour info, il existe différents types de comptes : https://support.google.com/work/andr.../6371476?hl=fr) :
    - Session.getActiveUser().getEmail() retourne systématiquement "" et ne peut donc pas être exploité dans ce contexte
    - étrangement le script se déclenche bien, mais aucune trace n'est inscrite dans les journaux (!?)

    J'ai testé aussi sans plus de succès : de passer par un trigger "installable" (et non par le onEdit automatique), et d'ajouter une fonction d'envoi de mail pour forcer les autorisations.
    Pas mieux avec Session.getEffectiveUser().getEmail() à la place de Session.getActiveUser().getEmail() : retourne systématiquement l'email du créateur du script (considéré comme celui qui l'exécute)

    Je crains donc que cette solution ne soit pas utilisable en l'état.
    Signature à venir...
    Ancienne : Divers NTIC (PHP, Dojo, à venir...) : http://tif44.fr/blog/

  13. #13
    Futur Membre du Club
    Femme Profil pro
    Lycéen
    Inscrit en
    Mars 2019
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Mars 2019
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Hey!

    J'arrive au même résultat que toi, mon script s'execute bien, mais l'adresse courriel reste ''''. Merci beaucoup pour ton aide, j'ai beaucoup appris!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Publication de métadonnées WCF : adresse relative non prise en compte
    Par Invité dans le forum Windows Communication Foundation
    Réponses: 4
    Dernier message: 06/08/2011, 14h18
  2. [FPDF] couleur de fond non prise en compte par MultiCell
    Par schwarzy2 dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 11/06/2008, 08h11
  3. Adresse IP non prise en compte par le système
    Par lesouriciergris dans le forum Windows Serveur
    Réponses: 4
    Dernier message: 08/03/2007, 21h50
  4. Couleur non prise en compte
    Par cell dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 22/07/2006, 14h44
  5. Couleur non prise en compte en exécution
    Par BECHE dans le forum Langage
    Réponses: 2
    Dernier message: 22/12/2005, 18h14

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