Script pour envoyer un mail
Bonjour
J'ai un document sheet avec plusieurs onglets (certains sont masqués et doivent être masqués, d'autres sont affichés et doivent rester affichés). Sur un de ces onglets, j'ai besoin d'éditer un pdf dont le nombre de lignes n'est pas constant pour la mise en forme. Ce pdf devra être envoyé par mail via gmail.
J'ai créé un document de travail car mon doc a des données confidentielles : https://docs.google.com/spreadsheets/d/1cUk3o7NUaA-pJd0-p-zvjSlds-aNlb42n51wi5RncAk/edit#gid=0
Voici mes contraintes :
- L'onglet à imprimer est test_F
- L'adresse mail est en H2
- Le nombre de lignes à imprimer est en I2
- Le nombre de colonnes à imprimer correspond aux colonnes de l'onglet (ici jusqu'à M)
- J'ai masqué la colonne J qui doit rester masquée dans le pdf
- Je veux conserver toutes les mises en forme (couleur, bordure, fusion de cellules)
- J'ai une image à conserver en K2
- Il y a 2 onglets affichés qui ne doivent pas être dans le pdf mais qui doivent rester affichés (BDD et data) une fois le script terminé
- Il y a 1 onglet masqué qui doit rester masqué une fois le script terminé
- Je souhaite que le pdf soit en paysage avec optimisation des marges + centré vertical & horizontal
Si quelqu'un peut m'aider ça serait super sympa ! (je ne connais rien en js
Merci par avance !!
Bonjour,
Tu n'as rien en H2 ... sinon voici (c'est dans ton fichier)
Tu auras à accepter les règles de confidentialité
function onOpen() {
var ui = SpreadsheetApp.getUi();
ui.createMenu('E-Mail')
.addItem('Envoyer ...', 'envoiCopieFeuillePDF')
.addToUi();
}
function envoiCopieFeuillePDF() {
DocumentApp.getActiveDocument();
DriveApp.getFiles();
// variables
const doc = SpreadsheetApp.getActive();
const docID = '1cUk3o7NUaA-pJd0-p-zvjSlds-aNlb42n51wi5RncAk';
const feuilleID = '0';
const email = doc.getActiveSheet().getRange("H2").getValue();
const d = Utilities.formatDate(new Date(), "GMT+1", "yyyyMMdd")
const fichier = doc.getActiveSheet().getRange("D2").getValue().toString() + "_" + d + ".pdf"
const objet = 'Test pdf'; // à modifier
const corps = "Veuillez trouver ci-joint ..."; // à compléter
// 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"
}]
});
} J'ai chopé un bout de code, et ça fonctionne en déclarant une variable, merci !!!

