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 :

Déterminer la dernière ligne d'un tableau [Google Sheets]


Sujet :

APIs Google

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2017
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2017
    Messages : 25
    Points : 15
    Points
    15
    Par défaut Déterminer la dernière ligne d'un tableau
    Bonjour à tous,

    Je suis vraiment débutant en codage. J'ai fais un tout petit peu de VBA et je me lance (malgré) moi dans le javascrpit afin d'automatiser un GoogleSheet.

    J'effectue ce code dans le cadre d'un bénévolat pour une association. Actuellement des mails (gmail) sont envoyer manuellement avec un texte identique à chaque personne ("Bienvenue à toi ! Ton inscription a bien été pris en compte...).

    Mon objectif est d'automatiser ceci en intégrant une condition.

    Voici mon code actuel.

    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
    function Mail_inscrip() {
     
    var app=SpreadsheetApp
    var feuille = app.getActiveSpreadsheet().getActiveSheet();
    var i=2;i<;i++
     
    if (feuille.getRange(i,4).getValue() =="x")
    var prenom=feuille.getRange(i,2).getValue()
    var adresse_mail=feuille.getRange(i,3).getValue()
    var objet = "EB2019 : confirmation d'inscription"
    var message="Bonjour "+prenom+", Bienvenue à toi ! Ton inscription a bien été pris en compte... ;)"
    MailApp.sendEmail(adresse_mail,objet,message)
    feuille.getRange(i,4).setValue("Fait")
     
    }
    En l'état il ne fonctionne pas. La variable "i" (représentant les colonne) n'a pas de limite ce qui entrain un bug. Le code cherche a envoyer des mails alors qu'il n'a pas d'adresse mail.

    Il faudrait que i soit compris entre 2 et la dernière ligne du tableau. En VBA je fais comme ça : Range("A" & Rows.Count).End(xlUp).Row

    Comment puis je avoir le même résultat en javascript ?

    J'ai essayé avec la fonction .lenght
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    var app=SpreadsheetApp
    var feuille = app.getActiveSpreadsheet().getActiveSheet();
    var nb_inscrit=feuille.getRange(2,10000).lenght
    feuille.getRange(5,5).setValue(nb_inscrit)
    Mais le résultat est "undefined".

    De plus avez vous un lien résumant les règles de syntaxe du javascript ?

    Je vous remercie par avance,

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 664
    Points
    66 664
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var nb_inscrit=feuille.getRange(2,10000).lenght
    Pas étonnant le undefined ...

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

    Ce n'est probablement qu'un pb de copier-collé, mais il faut revoir la structure (boucle ?) suivante : Sinon, l'index de la dernière ligne alimentée d'une sheet s'obtient à l'aide de getLastRow : https://developers.google.com/apps-s...eet#getlastrow

    Dernière chose : pour des raisons de performance, il est fortement recommandé d'utiliser "getValues" (récupération en une fois de l'ensemble des valeurs d'un range) et "setValues" plutôt que de laisser des parcours cellule à cellule...

    Bon courage

  4. #4
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2017
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2017
    Messages : 25
    Points : 15
    Points
    15
    Par défaut
    Bonjour,

    Effectivement avec vos conseils j'y suis arrivé ! Merci

    Donc voici mon code :
    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
    function Mail_inscrip() {
     
    var app=SpreadsheetApp
    var feuille = app.getActiveSpreadsheet().getActiveSheet();
    var nb_inscrit=feuille.getLastRow() //Trouve la dernière ligne du tableau
     
    for(var i=2;i<nb_inscrit+1;i++){
    if (feuille.getRange(i,4).getValue() =="x")
    var prenom=feuille.getRange(i,2).getValue()
    var adresse_mail=feuille.getRange(i,3).getValue()
    var objet = "EB2019 : confirmation d'inscription"
    var message="Bonjour "+prenom+", Bienvenue à toi ! Ton inscription a bien été pris en compte... ;)"
    MailApp.sendEmail(adresse_mail,objet,message)   //Fonction mail avec destinataire en "A"
    feuille.getRange(i,4).setValue("Fait")} 
     
    // les "{" et "}" permettent d'appliquer la boucle for à l'ensemble du code compris entre crochets
     
    }
    Pour l'instant je me suis pas lancé dans la performance, mais je garde le conseil si à l'usage ce code est trop long.

    Je vous remercie,

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

Discussions similaires

  1. Déterminer le n° ligne dans un tableau
    Par Bulbichou dans le forum BIRT
    Réponses: 1
    Dernier message: 16/11/2009, 10h21
  2. Réponses: 9
    Dernier message: 25/03/2009, 13h45
  3. Comment trouver la dernière ligne de mon tableau?
    Par thenico35 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 03/03/2009, 14h35
  4. Tester quelle est la dernière ligne d'un tableau pour la remplir ?
    Par drthodt dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 29/07/2008, 13h26
  5. [CSS] Dernière ligne d'un tableau
    Par GLDavid dans le forum Mise en page CSS
    Réponses: 6
    Dernier message: 28/07/2006, 15h23

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