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 :

Programmation d'envoi de mail


Sujet :

APIs Google

  1. #1
    Membre à l'essai
    Homme Profil pro
    Ingénieur sécurité
    Inscrit en
    Avril 2024
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur sécurité

    Informations forums :
    Inscription : Avril 2024
    Messages : 6
    Par défaut Programmation d'envoi de mail
    Bonjour,

    Dans une démarche d'automatisation de nos systèmes, je recherche à programmer l'envoi de mails via Google Sheets sous certaines conditions.

    Je dispose d'un fichier Google Sheets qui représente un planning de disponibilité (selon le jour et une personne).
    Ce que je souhaite, c'est que mon programme parcours le calendrier de ce fichier et identifie pour la semaine suivante si aucune case "Sur place" n'est présente. Si cela est bien le cas, un mail doit être envoyé (préférence en début de semaine) pour faire un rappel auprès des collaborateurs.
    Après diverses recherches, j'ai commencé un semblant de programmation sur Apps Script afin de faire une macro sur mon fichier Sheets.

    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
    /** @OnlyCurrentDoc */
    function sendEmails(){
      var feuille1 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("SAL");
      var feuille2 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Mails");
      var planning24 = feuille1.getRange("D136:K366").getValue();
     
     
     
        if (planning24!=='Sur place'){
          var adresseMail = feuille2.getRange("C2:C9").getValue();
          var objet = 'Rappel : Vsite sécurité SAL';
          var corps = "Bonjour. Actuellement, aucune visite sécurité n'est prévue sur SAL pour la semaine qui vient. Merci de vérifier le planning et de vous y ajouter en cas de disponibilité." ;
          MailApp.sendEmail(adresseMail, objet, corps);
        }
      }
    Ma "feuille1" correspond Ã* mon planning et ma "feuille2" correspond au listing des mails destinataires.

    C'est une première ébauche mais je ne l'ai encore pas mis à exécution car je suppose plusieurs problèmes à ma programmation :
    • J'ai peur que le programme envoie un mail toutes les semaine et ce même si 'Sur place' est présent dans le tableau
    • Je pense que la programmation du déclencheur selon l'agenda Google pour chaque lundi entre 7h et 8h n'est pas correct car cela ne se basera pas sur la feuille de calcul (tableau). Peut-être existe-t-il une fonction "date" reprenant l'horodateur de la feuille Sheets ?
    • J'ai l'impression qu'avec cette programmation, je devrais faire un bloc de programmation par semaine (soit une cinquantaine)


    Si je devais traduire "vulgairement" en code ce que je souhaite réaliser, voici ce que cela donnerait :

    Pour une certaine plage de données du tableau ;
    IIIIPour chaque période de 7 jours du tableau ;
    IIIIIIIISi aucune case n'est égale à 'Sur place' ;
    IIIIIIIIIIIIEnvoyer un mail à la liste de diffusion le lundi à 8h;
    IIIIIIIIFin Si
    IIIIFin Pour
    Fin Pour

    Auriez-vous des pistes de réponses me permettant de remplir mon cahier des charges ?

    Je reste disponible pour apporter davantage de précision sur ce projet,

    Cordialement

  2. #2
    Membre à l'essai
    Homme Profil pro
    Ingénieur sécurité
    Inscrit en
    Avril 2024
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur sécurité

    Informations forums :
    Inscription : Avril 2024
    Messages : 6
    Par défaut
    Après d'autres recherches, j'ai pu modifier mon code et j'arrive désormais à recevoir des mails. Cependant, j'ai deux problèmes selon la programmation de ma boucle :
    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
    function mailRappel(){
     
      //Récupération des données
      let dispoEncS20 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("SAL").getRange("D136:K140").getValue();
      //let mailEnc = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Mails").getRange("C2:C9");
      //let str = '';
     
      //Ecriture du message
      let sujet = 'Rappel : Visite sécurité SAL';
      let corps = "Bonjour. Actuellement, aucune visite sécurité n'est prévue sur SAL pour la semaine qui vient. Merci de vérifier le planning et de vous y ajouter en cas de disponibilité.";
     
      //Programmation
      //for (let i = 0; i<40; i++){
        if (dispoEncS20 != "Sur place"){
          MailApp.sendEmail(
          {
            to: 'nom.prenom@gmail.com',
            subject: sujet,
            htmlBody: corps
          }
        )
      }
      //str = str+i;
      //}
    }
    Dans le cas de ma boucle if seule, si j'exécute mon programme, celui-ci s'arrête uniquement à la première case de mon tableau (logique, je ne le parcours pas en entier avec cette méthode).
    Dans le cas ou j'utilise une boucle for, mon erreur est de coder le nombre de case de mon tableau (40) et je me retrouve à recevoir 40 mails. Et je n'ai pas vérifier, mais je suppose que c'est à chaque fois ma première case du tableau (D136) qui est prise en compte.

    Mon objectif maintenant est de programmer mon code pour :
    • parcourir l'ensemble de mon tableau ;
    • envoyer un mail uniquement quand toutes les cellules du tableau sont différentes de 'Sur place'


    Auriez-vous une piste de programmation pour valider cet objectif ?

    En vous remerciant d'avance,

Discussions similaires

  1. Programmation d'envoi de mail
    Par ABellevi dans le forum Langage
    Réponses: 8
    Dernier message: 23/04/2024, 17h25
  2. Programmer des envois de mails
    Par PC1967 dans le forum Lotus Notes
    Réponses: 2
    Dernier message: 25/12/2013, 01h32
  3. Programmation système : envoi de mails à un serveur
    Par thiata86 dans le forum Débuter
    Réponses: 2
    Dernier message: 24/07/2013, 09h18
  4. programmé un envoi de mail avec lotus notes
    Par bomonde dans le forum Exchange Server
    Réponses: 0
    Dernier message: 22/11/2012, 11h09
  5. Programme : automatiser l'envoi de mail-Outlook
    Par ellewided dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 13/08/2009, 13h56

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