Bonjour,
Désolé pour la réponse plus que tardive !
De manière générale, les scripts sont exécutés avec le compte de la personne qui l’exécute, et donc avec son adresse e-mail (jusqu’ici, c’est logique). Si vous voulez que le mail soit envoyé depuis une autre adresse, deux solutions :
- La plus compliquée : mettre en place un compte de service avec une délégation de domaine, puis écrire un code complexe qui fait que vous vous connectez au compte de service pour que lui-même se connecte au compte voulu afin que ce compte envoie le mail.
- La plus simple : rajouter
l’autre boîte email en tant qu’alias de votre email, puis changer le code d’envoi d’email en utilisant
GmailApp.sendEmail() avec un objet contenant la propriété from et l’alias que vous venez d’établir. Ainsi, le mail sera envoyé via l’alias, qui s’avère être l’autre boîte mail !
Code : Tout sélectionner
function envoiPDF() {
// /!\ Bien qu’un commentaire, cette ligne sert à forcer la détection automatique des autorisations par Apps Script lors de l’exécution du script.
// En effet, pour que l’export PDF fonctionne, il faut que le script soit autorisé à lire les fichiers de votre Drive, chose qu’il ne détecte pas par défaut.
// Bien qu’il soit possible de le faire à la main, il est plus simple de le faire ainsi, avec une ligne en commentaire comme ci-dessous :
// DriveApp.getFiles();
// VARIABLES
// À FAIRE : Mettre l'ID du Google Sheets à exporter, par exemple : "1injaUvfQu1CSvmmfn8YT0wLNjg7Ixxxxxxxxxxxxxxx"
// L’ID est dans l’URL du fichier Google Sheets, après /d/
const docID = "";
// À FAIRE : Mettre l’ID de la feuille, qui se trouve dans l’URL du Google Sheets, derrière gid=
const feuilleID = "";
// À FAIRE : Mettre l’adresse email à laquelle envoyer le PDF
const email = "";
// À FAIRE : Mettre l’alias qui enverra le mail
const alias = "";
// L’objet du mail à envoyer.
const objet = "Export PDF par Google Apps Script";
// Le corps du mail à envoyer.
const corps = "Ci-joint : le fichier PDF.";
// Le nom de l’export PDF. Il faut bien inclure le .pdf !
const nomFichierPDF = "Export.pdf"
// À FAIRE : Mettre la région de cellules à exporter, en notation A1 (par exemple, "C2:O27")
const range = "A1:B4";
// Création du fichier pdf avec l’URL spéciale d’export
const url = 'https://docs.google.com/spreadsheets/d/' + docID + '/export?';
// Les options d’export, à rajouter au besoin. L’ordre n’a pas d’importance. Retirez les barres obliques (//) en début de ligne pour activer une option.
const exportOptions =
"exportFormat=pdf&format=pdf" +
"&range=" + range +
//"&size=A4" + // Taille de la feuille
//"&portrait=true" + // orientation portrait, false pour paysage
//"&fitw=false" + // pas d'ajustement en largeur
//"&sheetnames=false&printtitle=false" + // pas de nom ni de titre à l'impression
//"&pagenumbers=false&gridlines=false" + // pas de numérotation, pas de grille
//"&fzr=false" + // frozen rows = pas de répétition de l'en-tête
"&gid=" + feuilleID;
// UrlFetchApp pour récupérer le résultat à l’URL que l’on construit avec l’URL de base et les options d’export définies juste au-dessus.
const params = {
headers: {
'Authorization': 'Bearer ' + ScriptApp.getOAuthToken(),
},
muteHttpExceptions: true,
}
const reponse = UrlFetchApp.fetch(url + exportOptions, params);
if (reponse.getResponseCode() !== 200) {
console.log("Erreur dans l’appel à UrlFetchApp ! – " + reponse.getResponseCode());
console.log(reponse.getContentText());
console.log(reponse.getHeaders());
return;
}
// Récupération du "blob" représentant notre fichier
const blob = reponse.getBlob();
// Envoi email avec fichier attaché
GmailApp.sendEmail(email, objet, corps, {
htmlBody: corps,
from: alias,
attachments: [{
fileName: nomFichierPDF,
content: blob.getBytes(),
mimeType: "application/pdf"
}]
});
}
Cela devrait fonctionner correctement