Page 1 sur 2
Envois d'emails automatiques en fonction d'une cellule
Publié : 01 déc. 2022 21:37
par Snake259
Bonjour à tous,
Données :
J'ai une base de données qui contient une liste de Noms, prénoms,.... adresses mails,... et une colonne avec Oui ou autre chose..
Mon objectif :
Envoyer un Email qui contient un lien pour accéder à un autre fichier (un planning).
Cette base de données évolue et donc je ne dois pas renvoyer ce mail à ceux qui l'on déjà reçu.
J'ai donc dans mon tableau une cellule qui s'adapte avec "Oui" si le mail a déjà été envoyé. Si cette cellule contient autre chose que "Oui", le mail est alors envoyé, puis adaptée en "Oui".
J'ai réussi et tout fonctionne MAIS un message d'erreur arrive en fin de script.
J'insiste bien que tout fonctionne, les mails sont bien envoyés et la colonne s'adapte bien avec le "Oui".
Je pense que la variable toEmail n'est prise en compte comme une adresse mail mais bien comme une chaîne de caractères.
Merci pour votre aide. Là, je sèche.
Re: Envois d'emails automatiques en fonction d'une cellule
Publié : 01 déc. 2022 21:40
par Snake259
function sendMail() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('Données');
var range = sheet.getRange(5, 1, sheet.getLastRow()-1, sheet.getLastColumn());
var data = range.getValues();
for (var i in data){
var row = data;
var line = parseInt(i)+5;
if(row[14] != "Oui"){
var toEmail = row[11];
var subject = "Lien disponibilités étudiants ";
var message = "Bonjour " + row[13] + ", ";
message += "Voici le lien des disponibilités : " + ss.getSheetByName('Données').getRange('N1').getValue();
MailApp.sendEmail(toEmail,subject,message)
sheet.getRange(line, 15).setValue("Oui");
SpreadsheetApp.flush();
}
}
}
Re: Envois d'emails automatiques en fonction d'une cellule
Publié : 02 déc. 2022 09:22
par RémiD
Bonjour à toi Snake259 !
Pourrais-tu nous partager l'erreur que te renvois la console stp ?
Re: Envois d'emails automatiques en fonction d'une cellule
Publié : 07 déc. 2022 19:34
par Snake259
Salut RémiD,
Désolé pour la réponse tardive, il y avait un petit problème technique sur le forum.
Voici l'erreur que je reçois :
Exception: Échec de l'envoi de l'e-mail : aucun destinataire. Détails.
Mais l'envoi fonctionne bien.
La colonne 11 contient les adresses mails : var toEmail = row[11];
Quand je remplace toEmail par une adresse mail, ça fonctionne : MailApp.sendEmail(toEmail,subject,message).
Je pense qu'il faudrait déclarer la variable toEmail en au format d'Email mais je ne vois pas comment.
Une idée?
Merci.
Re: Envois d'emails automatiques en fonction d'une cellule
Publié : 11 déc. 2022 18:42
par Snake259
RémiD a écrit : ↑02 déc. 2022 09:22
Bonjour à toi Snake259 !
Pourrais-tu nous partager l'erreur que te renvois la console stp ?
Salut RémiD,
Désolé pour la réponse tardive, il y avait un petit problème technique sur le forum.
Voici l'erreur que je reçois :
Exception: Échec de l'envoi de l'e-mail : aucun destinataire. Détails.
Mais l'envoi fonctionne bien.
La colonne 11 contient les adresses mails : var toEmail = row[11];
Quand je remplace toEmail par une adresse mail, ça fonctionne : MailApp.sendEmail(toEmail,subject,message).
Je pense qu'il faudrait déclarer la variable toEmail en au format d'Email mais je ne vois pas comment.
Une idée?
Merci.
Re: Envois d'emails automatiques en fonction d'une cellule
Publié : 13 déc. 2022 10:49
par RémiD
Salut Snake259, j'espère que tu vas bien ?
Aucun problème !
Effectivement le problème de ton script pourrait se positionner au niveau du formatage de ton adresse mail, un simple espace vide ou insécable pourrait produire ce comportement !
Je te conseille d'ajouter cette ligne de code en dessous de la déclaration de ta variable toEmail :
toEmail.trim();
Cette fonction te permettra de supprimer les espaces vides avant et après ta chaîne de caractère
N'hésite pas à revenir vers nous pour nous partager le résultat, bonne matinée à toi et à très vite !
Re: Envois d'emails automatiques en fonction d'une cellule
Publié : 13 déc. 2022 13:39
par Snake259
Salut Rémid,
Avant tout, merci pour ton aide.
J'ai testé ta solution mais j'ai toujours le même problème :
un message d'erreur s'affiche avec : Exception: Échec de l'envoi de l'e-mail : aucun destinataire. Détails.
Cependant, ce qui est bizarre, c'est que le script fonctionne.
Rien d'autre en magasin comme solution?
Re: Envois d'emails automatiques en fonction d'une cellule
Publié : 13 déc. 2022 13:41
par RémiD
Avec plaisir !
Huuum effectivement assez étrange, je vais essayer de simuler ton code de mon côté et je reviens vers toi pour te partager mes retours !
Re: Envois d'emails automatiques en fonction d'une cellule
Publié : 13 déc. 2022 13:56
par RémiD
Hoplà ! Je viens d'essayer de simuler ton script et je suis rapidement retombé sur la même erreur que toi
Je viens de comprendre ce qu'il cloche : ta boucle termine toujours avec un dernier row qui peux être tout simplement vide, ce qui nous donne une variable toEmail vide elle aussi.
La solution est de tester si toEmail n'est pas vide avant d'envoyer l'email, voici une version de ton script avec ce correctif :
function sendMail() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('Données');
var range = sheet.getRange(5, 1, sheet.getLastRow()-1, sheet.getLastColumn());
var data = range.getValues();
for (var i in data){
var row = data;
var line = parseInt(i)+5;
if(row[14] != "Oui")
{
var toEmail = row[11];
var subject = "Lien disponibilités étudiants ";
var message = "Bonjour " + row[13] + ", ";
message += "Voici le lien des disponibilités : " + ss.getSheetByName('Données').getRange('N1').getValue();
if(toEmail!=''){
MailApp.sendEmail(toEmail,subject,message);}
sheet.getRange(line, 15).setValue("Oui");
SpreadsheetApp.flush();
}
}
}
Chez moi tout fonctionne et je ne retombe plus sur l'erreur, à toi d'essayer si tout fonctionne bien aussi de ton côté !
En espérant avoir pu t'aider !
Re: Envois d'emails automatiques en fonction d'une cellule
Publié : 13 déc. 2022 18:13
par Snake259
Whaouw, Top. Dorénavant, je vais devoir t'appeler El'Maestro
ça faisait +de 3 semaines que je me cassais la tête avec ça.
J'ai juste dû modifier la ligne =>
var row = data en
var row = data CROCHET i CROCHET pour associer la bonne ligne.
Encore une fois merci beaucoup.