Problème mail automatique
Bonjour,
J'ai un script pour envoyer automatiquement un mail lors que dans la casse G35 est marquer "OUI" .
Sa envoie automatiquement un email a différente personnes par rapport a une liste de destinataire prédéfinie, sauf que le problème c'est que lors que la casse G35 est marquer "OUI" rien ne se passe.
Trouvez si dessous le lien du tableau: Copie de Copie de Inventaire POUR Pedro - Google Sheets<br>
function onEdit(e) {
// Vérifier que l'objet événement est défini
if (!e) {
Logger.log("L'objet événement 'e' est indéfini");
return;
}
var feuille = e.source.getActiveSheet();
var range = e.range;
// Vérifier si la cellule modifiée est G35 et si sa valeur est "OUI"
if (range.getA1Notation() === 'G35' && e.value === 'OUI') {
sendTableAsPDF();
}
}
function sendTableAsPDF() {
// Récupérer la feuille active
var feuille = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
// Liste des destinataires
var destinataires = [
feuille.getRange("I8").getValue(),
feuille.getRange("I9").getValue(),
feuille.getRange("P5").getValue(),
feuille.getRange("P6").getValue(),
feuille.getRange("P7").getValue(),
feuille.getRange("P9").getValue(),
feuille.getRange("P10").getValue(),
feuille.getRange("P11").getValue()
];
// Sujet du mail
var sujet = "Compte rendu de la garde";
// Contenu du mail
var message =
"Bonjour,\n\nVoici le compte rendu de la garde du " +
feuille.getRange("D6").getValue() +
" " +
feuille.getRange("E6").getValue() +
" " +
feuille.getRange("F6").getValue() +
".\n" +
"Le chef de garde du jour était : " +
feuille.getRange("J5").getValue() +
"\n\nLes retours des inventaires sont :\n\n" +
feuille.getRange("B17").getValue() + " " + feuille.getRange("C17").getValue() + " : " + "\n" + feuille.getRange("M17").getValue() + "\n\n" +
feuille.getRange("B20").getValue() + " : " + "\n" + feuille.getRange("M20").getValue() + "\n\n" +
feuille.getRange("B23").getValue() + " " + feuille.getRange("C23").getValue() + " : " + "\n" + feuille.getRange("M23").getValue() + "\n\n" +
feuille.getRange("B26").getValue() + " " + feuille.getRange("C26").getValue() + " : " + "\n" + feuille.getRange("M26").getValue() + "\n\n" +
feuille.getRange("B29").getValue() + " " + feuille.getRange("C29").getValue() + " : " + "\n" + feuille.getRange("M29").getValue() + "\n\n" +
"\n\nRespectueusement";
// Parcourir la liste des destinataires
for (var i = 0; i < destinataires.length; i++) {
// Créer et enregistrer le PDF
var pdfFile = createAndSavePDF(feuille);
// Vérifier si le PDF a été créé avec succès
if (pdfFile) {
// Envoyer le mail avec le PDF en pièce jointe
MailApp.sendEmail({
to: destinataires[i],
subject: sujet,
body: message,
attachments: [pdfFile.getAs(MimeType.PDF)]
});
// Supprimer le fichier PDF après l'envoi du mail
pdfFile.setTrashed(true);
} else {
Logger.log("Erreur lors de la création du PDF.");
}
}
}
// Fonction pour créer et enregistrer le PDF
function createAndSavePDF(feuille) {
// URL du dossier de destination
var folderUrl = 'https://drive.google.com/drive/folders/1NCVwdEHLU-X4YezkoJBeVdmLrJPuaQfB';
// Extraire l'identifiant du dossier à partir de l'URL
var folderId = folderUrl.match(/[-\w]{25,}/);
// Vérifier si l'identifiant du dossier a été trouvé
if (folderId) {
folderId = folderId[0];
var folder = DriveApp.getFolderById(folderId);
// Obtenir le lien d'exportation PDF
var pdfBlob = getPDFExportLink(feuille);
// Vérifier si le lien d'exportation PDF a été obtenu avec succès
if (pdfBlob) {
// Télécharger le PDF et l'enregistrer dans le dossier de destination
var nomFichier = "garde_" + feuille.getRange("D6").getValue() + "_" + feuille.getRange("E6").getValue() + "_" + feuille.getRange("F6").getValue() + ".pdf";
var pdfFile = folder.createFile(pdfBlob).setName(nomFichier);
// Retourner le fichier PDF
return pdfFile;
} else {
Logger.log("Erreur lors de l'exportation en PDF.");
return null;
}
} else {
Logger.log("Impossible de trouver l'identifiant du dossier dans l'URL.");
return null;
}
}
// Fonction pour obtenir le lien d'exportation PDF
function getPDFExportLink(sheet) {
var spreadsheetId = sheet.getParent().getId();
var url = "https://docs.google.com/spreadsheets/d/" + spreadsheetId + "/export?format=pdf&portrait=false&gid=" + sheet.getSheetId();
var options = {
headers: {
'Authorization': 'Bearer ' + ScriptApp.getOAuthToken()
}
};
var response = UrlFetchApp.fetch(url, options);
var blob = response.getBlob();
return blob;
}avez vous une idée d'où peux venir le problème.
Merci par avance pour votre aide.
Salut !
Et si tu échappes la casse en forçant la majuscule ? càd tu convertie ton input en majuscule, si je reprends le début de ton script :
function onEdit(e) {
// Vérifier que l'objet événement est défini
if (!e) {
Logger.log("L'objet événement 'e' est indéfini");
return;
}
var feuille = e.source.getActiveSheet();
var range = e.range;
var valeur = e.value.toUpperCase();
// Vérifier si la cellule modifiée est G35 et si sa valeur est "OUI"
if (range.getA1Notation() === 'G35' && valeur === 'OUI') {
sendTableAsPDF();
}
}
...je viens de modifier le script et ce la ne fonctionne pas non plus, avec vos modification
function onEdit(e) {
// Vérifier que l'objet événement est défini
if (!e) {
Logger.log("L'objet événement 'e' est indéfini");
return;
}
var feuille = e.source.getActiveSheet();
var range = e.range;
var valeur = e.value.toUpperCase();
… var url = "https://docs.google.com/spreadsheets/d/" + spreadsheetId + "/export?format=pdf&portrait=false&gid=" + sheet.getSheetId();
var options = {
headers: {
'Authorization': 'Bearer ' + ScriptApp.getOAuthToken()
}
};
var response = UrlFetchApp.fetch(url, options);
var blob = response.getBlob();
return blob;
}je reçois le mail suivent:
17:38 (il y a 3 heures)
Your script, Macros enregistrées (Inventaire POUR Pedro), has recently failed to finish successfully. A summary of the failure(s) is shown below. To configure the triggers for this script, or change your setting for receiving future failure notifications, click here.
The script is used by the document Copie de Copie de Inventaire POUR Pedro.
| Start | Function | Error Message | Trigger | End |
|---|---|---|---|---|
| 2024-07-16 17:38:05 Central European Summer Time | onEdit | Exception: Access denied: DriveApp. | edit | 2024-07-16 17:38:13 Central European Summer Time |
Sincerely,
Google Apps Script
Need help? Visit the Google Apps Script documentation. Please do not reply to this message. (c) 2024 Google
Bonjour,
Le problème ne vient pas du script mais des droits, pourquoi la fonction onEdit doit renvoyer blob ?