Envois d'emails automatiques en fonction d'une cellule Le sujet est résolu

Avatar de l’utilisateur
Snake259
Messages : 10
Inscription : 26 nov. 2022 20:46
A remercié : 1 fois

Envois d'emails automatiques en fonction d'une cellule

Message 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.  🤔
Avatar de l’utilisateur
Snake259
Messages : 10
Inscription : 26 nov. 2022 20:46
A remercié : 1 fois

Re: Envois d'emails automatiques en fonction d'une cellule

Message 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();

}
}
}

 
Dernière modification par Snake259 le 09 déc. 2022 17:32, modifié 1 fois.
Avatar de l’utilisateur
RémiD

Coach Numericoach
Invétéré
Messages : 18
Inscription : 12 avr. 2022 16:38
A remercié : 3 fois
Remercié : 1 fois

Re: Envois d'emails automatiques en fonction d'une cellule

Message par RémiD »

Bonjour à toi Snake259 !
Pourrais-tu nous partager l'erreur que te renvois la console stp ? 😉
Avatar de l’utilisateur
Snake259
Messages : 10
Inscription : 26 nov. 2022 20:46
A remercié : 1 fois

Re: Envois d'emails automatiques en fonction d'une cellule

Message 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.
Avatar de l’utilisateur
Snake259
Messages : 10
Inscription : 26 nov. 2022 20:46
A remercié : 1 fois

Re: Envois d'emails automatiques en fonction d'une cellule

Message 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.
Avatar de l’utilisateur
RémiD

Coach Numericoach
Invétéré
Messages : 18
Inscription : 12 avr. 2022 16:38
A remercié : 3 fois
Remercié : 1 fois

Re: Envois d'emails automatiques en fonction d'une cellule

Message 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 !
Avatar de l’utilisateur
Snake259
Messages : 10
Inscription : 26 nov. 2022 20:46
A remercié : 1 fois

Re: Envois d'emails automatiques en fonction d'une cellule

Message 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?
 
Avatar de l’utilisateur
RémiD

Coach Numericoach
Invétéré
Messages : 18
Inscription : 12 avr. 2022 16:38
A remercié : 3 fois
Remercié : 1 fois

Re: Envois d'emails automatiques en fonction d'une cellule

Message 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 !
Avatar de l’utilisateur
RémiD

Coach Numericoach
Invétéré
Messages : 18
Inscription : 12 avr. 2022 16:38
A remercié : 3 fois
Remercié : 1 fois

Re: Envois d'emails automatiques en fonction d'une cellule

Message 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 !
Avatar de l’utilisateur
Snake259
Messages : 10
Inscription : 26 nov. 2022 20:46
A remercié : 1 fois

Re: Envois d'emails automatiques en fonction d'une cellule

Message 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.
 
Dernière modification par Snake259 le 13 déc. 2022 18:26, modifié 1 fois.
Répondre

Rejoignez la discussion 💬

Vous devez être enregistré pour participer à la discussion et échanger avec les différents membres

Inscrivez-vous dès aujourd'hui

Vous n'êtes pas encore membre ? Rejoignez-nous gratuitement dès aujourd'hui et contribuer en postant votre réponse ou question sur tous les forums disponibles

Inscription

Connectez-vous