Script pour envoyer un mail en pdf depuis une feuille Gsheet
Bonjour,
J'ai ce script qui fonctionne très bien. Mais celui ci crée un PDF de toutes les feuilles de mon fichier qui comporte plusieurs feuilles. Comment et ou caser le choix d'une feuille.
Merci de m'aider
/* Envoyer la feuille de calcul par courriel au format PDF */
function emailFeuilleDeCalculVersPDF() {
// Email réceptionant le PDF de cette feuille de calcul var email = "xxxxx@xxxxx";"xxxxx@xxxxx";
// Obtenir l'URL de la feuille de calcul actuellement active (lien) var feuille = SpreadsheetApp.getActiveSpreadsheet();
// Sujet du message var sujet = "PDF généré depuis la feuille de calcul " + feuille.getName();
// Corps du mail var corpsDuMessage = "<p>Bonjour,</p>Veuillez trouver en pièce jointe le PDF de l'avancement des travaux en-cours REPC ET REL.<p>Bonne réception,</p>Franck"; var contenant = DriveApp.getFileById(feuille.getId()).getAs("application/pdf"); contenant.setName(feuille.getName() + ".pdf");
// Si vous n'avez pas dépassé le quota, envoi du mail avec la pièce jointe en PDF. if (MailApp.getRemainingDailyQuota() > 0) GmailApp.sendEmail(email, sujet, corpsDuMessage, { htmlBody: corpsDuMessage, attachments:[contenant]
});
}
Bonjour,
Utilise la balise "code" </>
pour mettre un script, sinon ce n'est pas lisible
Voici un exemple à adapter ou simplifier (j'y ai laissé la sauvegarde du fichier pdf envoyé), qui n'envoie qu'une seule feuille
function envoiCopieFeuillePDF() {
DocumentApp.getActiveDocument();
DriveApp.getFiles();
// variables
const doc = SpreadsheetApp.getActive();
const docID = '________mettre_ici_l_ID___du___fichier_____________';
const feuilleID = '__ID_feuille__';
const email = '___email_destinataire____;
const dossier = DriveApp.getFolderById('__________ID_du_dossier______________');
const d = Utilities.formatDate(new Date(), "GMT+1", "yyyyMMdd")
const fichier = '____nom___du___fichier____suivi_ici_de_sa_date____________' + "_" + d + ".pdf"
const objet = 'Test pdf';
const corps = "Veuillez trouver ci-joint ...";
// Création du fichier pdf
const url = 'https://docs.google.com/spreadsheets/d/' + docID + '/export?';
const exportOptions =
'exportFormat=pdf&format=pdf' +
'&size=A4' +
'&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;
var params = {method:"GET",headers:{"authorization":"Bearer "+ ScriptApp.getOAuthToken()}};
var reponse = UrlFetchApp.fetch(url + exportOptions, params).getBlob();
// Envoi email avec fichier attaché
GmailApp.sendEmail(email, objet, corps, {
htmlBody: corps,
attachments: [{
fileName: fichier,
content: reponse.getBytes(),
mimeType: "application/pdf"
}]
});
// Sauvegarde du fichier.
dossier.createFile(reponse.setName(fichier));
}
Bonjour voici mon script. Désolé, effectivement pas terrible pour la lecture. J'ai essayé le votre, j'ai cette erreur:
13:59:53ErreurException: Unexpected error while getting the method or property getFolderById on object DriveApp.envoiCopieFeuillePDF@ Sans titre.gs:10. Je n'ai pas besoin nécessairement de garder une copie.
Pour mon script au bon format qui fonctionne mais n'arrive pas à caser la feuille voulu.
/* Envoyer la feuille de calcul par courriel au format PDF */
function emailFeuilleDeCalculVersPDF() {
// Email réceptionant le PDF de cette feuille de calcul
var email = "xxxxxx@xxxxfr";
// Obtenir l'URL de la feuille de calcul actuellement active (lien)
var feuille = SpreadsheetApp.getActiveSpreadsheet();
// Sujet du message
var sujet = "PDF généré depuis la feuille de calcul " + feuille.getName();
// Corps du mail
var corpsDuMessage = "<p>Bonjour,</p>Veuillez trouver en pièce jointe le PDF de votre feuille de calcul.<p>Bonne réception,</p>";
var contenant = DriveApp.getFileById(feuille.getId()).getAs("application/pdf");
contenant.setName(feuille.getName() + ".pdf");
// Si vous n'avez pas dépassé le quota, envoi du mail avec la pièce jointe en PDF.
if (MailApp.getRemainingDailyQuota() > 0)
GmailApp.sendEmail(email, sujet, corpsDuMessage, {
htmlBody: corpsDuMessage,
attachments:[contenant]
});
}
Bonjour voici mon script. Désolé, effectivement pas terrible pour la lecture. J'ai essayé le votre, j'ai cette erreur:
13:59:53ErreurException: Unexpected error while getting the method or property getFolderById on object DriveApp.envoiCopieFeuillePDF@ Sans titre.gs:10. Je n'ai pas besoin nécessairement de garder une copie.
tu peux supprimer dossier si tu ne conserves pas de copie j'avais mis l'enveloppe complète de ce que j'ai au cas où
cela donnerait alors
function envoiCopieFeuillePDF() {
// variables
const docID = 'xxxxxxxxxxxx';
const feuilleID = 'yyyyyyyyyyyyy';
const email = 'zzzzzzzzzzzzz';
const fichier = 'ma feuille' + ".pdf"
const objet = 'Test pdf';
const corps = "Veuillez trouver ci-joint ...";
// Création du fichier pdf
const url = 'https://docs.google.com/spreadsheets/d/' + docID + '/export?';
const exportOptions =
'exportFormat=pdf&format=pdf' +
'&size=A4' +
'&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;
var params = {method:"GET",headers:{"authorization":"Bearer "+ ScriptApp.getOAuthToken()}};
var reponse = UrlFetchApp.fetch(url + exportOptions, params).getBlob();
// Envoi email avec fichier attaché
GmailApp.sendEmail(email, objet, corps, {
htmlBody: corps,
attachments: [{
fileName: fichier,
content: reponse.getBytes(),
mimeType: "application/pdf"
}]
});
}
je ne suis pas sûr de m'en sortir avec ta version ... je regarde au cas où ...
Bonjour,
Meme probleme avec cet ligne.
const dossier = DriveApp.getFolderById('__________ID_du_dossier______________');
qu'appelle tu ID du dossier
function envoiCopieFeuillePDF() {
DocumentApp.getActiveDocument();
DriveApp.getFiles();
// variables
const doc = SpreadsheetApp.getActive();
const docID = 'Facturier 18';
const feuilleID = 'Facture';
const email = 'Parametre!B5';
const dossier = DriveApp.getFolderById('Facture18');
const d = Utilities.formatDate(new Date(), "GMT+1", "yyyyMMdd")
const fichier = 'Facture' + "_" + d + ".pdf"
const objet = 'Facture18 ';
const corps = "Veuillez trouver ci jointe la facture de loyer";
// Création du fichier pdf
const url = 'https://docs.google.com/spreadsheets/d/' + docID + '/export?';
const exportOptions =
'exportFormat=pdf&format=pdf' +
'&size=A4' +
'&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;
var params = {method:"GET",headers:{"authorization":"Bearer "+ ScriptApp.getOAuthToken()}};
var reponse = UrlFetchApp.fetch(url + exportOptions, params).getBlob();
// Envoi email avec fichier attaché
GmailApp.sendEmail(email, objet, corps, {
htmlBody: corps,
attachments: [{
fileName: fichier,
content: reponse.getBytes(),
mimeType: "application/pdf"
}]
});
// Sauvegarde du fichier.
dossier.createFile(reponse.setName(fichier));
}
Pouvez vous me dire d'ou vient le PB ,
16:02:32ErreurException: Unexpected error while getting the method or property getFolderById on object DriveApp.envoiCopieFeuillePDF@ Code.gs:10
Bonjour,
je ne pense pas que les codes ID soient bons
const dossier = DriveApp.getFolderById('Facture18'); c'est plutôt du genre const dossier = DriveApp.getFolderById('"1COGh2XxfGYaiu2NmxDoVdeyW_XAUYstR"');
idem pour l'ID du doc et l'ID de la feuille
exemple :
+infos : https://developers.google.com/sheets/api/guides/concepts
si l'URL de la feuille est
https://docs.google.com/spreadsheets/d/1rV2_S2q5rcakOuHs2E1iLeKR2floRIozSytAt2iRXo8/edit#gid=0
l'identifiant de la feuille est
1rV2_S2q5rcakOuHs2E1iLeKR2floRIozSytAt2iRXo8
petite rectification si je peux me permettre
si l'URL de la feuille est
https://docs.google.com/spreadsheets/d/1rV2_S2q5rcakOuHs2E1iLeKR2floRIozSytAt2iRXo8/edit#gid=0
l'identifiant du fichier (que j'appelle docID) est
1rV2_S2q5rcakOuHs2E1iLeKR2floRIozSytAt2iRXo8
et l'identifiant de la feuille (que j'appelle feuilleID) est (après gid dans l'url)
O
A noter que plusieurs dossiers comme plusieurs fichiers peuvent avoir le même nom, il faut donc travailler avec les ID
je pensais que tu n'avais pas besoin de sauvegarder, donc ceci n'est plus nécessaire ...
Meme probleme avec cet ligne.
const dossier = DriveApp.getFolderById('__________ID_du_dossier______________');
Bonjour,
comment faire pour que : const email = '___email_destinataire____;
'___email_destinataire____; soit une cellule ?
désolé des questions de débutant
var email = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Parametre').getRange('B5').getValue()
Merci ca marche au top