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.
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();
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.
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.
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 !
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.
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 !
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 !
correction : sorry à tous mais je n’arrive pas à afficher des crochets, ils disparaissent à chaque fois.[hr] var row = data en var row = data _CROCHET _ i CROCHET