Scrip pour convertir un googlesheet en pdf et l'envoyer par mail

Bonjour,

Je suis un noob en matière de script ...

Pour de la facturation, j'ai besoin d'un script qui me permette de :

  • Sélectionner les informations d'une plage de données de ma première feuille, au format A4 (je ne veux pas envoyer toutes les données contenus dans la feuille)
  • Convertir cette feuille A4 en PDF,
  • Envoyer ce PDF à une adresse mail saisie dans la cellule J8,

- BONUS : personnaliser automatiquement le nom du destinataire dans le corps du mail.

Par exemple :

" Bonjour Mr (NomDestinataire),

Vous trouverez ci-joint votre facture.

Cordialement, "

Voici un bon début de script que j'ai trouvé mais qu'il faudrait modifier si possible.

Merci d'avance

function sendSheetToPdfwithA1MailAdress(){ // this is the function to call
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sh = ss.getSheets()[0]; // it will send sheet 0 wich is the first sheet in the spreadsheet.
  // if you change the number, change it also in the parameters below
  var shName = sh.getName()
  sendSpreadsheetToPdf(0, shName, sh.getRange('A1').getValue(),"test email with the adress in cell A1 ", "This is it !");
}
function sendSpreadsheetToPdf(sheetNumber, pdfName, email,subject, htmlbody) {
  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var spreadsheetId = spreadsheet.getId()  
  var sheetId = sheetNumber ? spreadsheet.getSheets()[sheetNumber].getSheetId() : null;  
  var url_base = spreadsheet.getUrl().replace(/edit$/,'');

  var url_ext = 'export?exportFormat=pdf&format=pdf'   //export as pdf

      + (sheetId ? ('&gid=' + sheetId) : ('&id=' + spreadsheetId)) 
      // following parameters are optional...
      + '&size=A4'      // paper size
      + '&portrait=true'    // orientation, false for landscape
      + '&fitw=true'        // fit to width, false for actual size
      + '&sheetnames=true&printtitle=false&pagenumbers=true'  //hide optional headers and footers
      + '&gridlines=false'  // hide gridlines
      + '&fzr=false';       // do not repeat row headers (frozen rows) on each page

  var options = {
    headers: {
      'Authorization': 'Bearer ' +  ScriptApp.getOAuthToken(),
    }
  }

  var response = UrlFetchApp.fetch(url_base + url_ext, options);
  var blob = response.getBlob().setName(pdfName + '.pdf');
  if (email) {
    var mailOptions = {
      attachments:blob, htmlBody:htmlbody
    }
MailApp.sendEmail(
      email, 
      subject+" (" + pdfName +")", 
      "html content only", 
      mailOptions);

MailApp.sendEmail(
      Session.getActiveUser().getEmail(), 
      "FRWD "+subject+" (" + pdfName +")", 
      "html content only", 
      mailOptions);
  }
}

Bj Matt,

Bien d''accord avec toi, c'est un très bon "début de script qu'il faudrait modifier si possible".

Et puis ?

EMX

Heu... je n'ai pas très bien compris votre réponse

Bonjour Matt,

Ne cherche pas une réponse, puisqu'il n'y a pas de réelle question.

C'est ce que je voulais dire par "Et puis...".

Que veux tu qu'on fasse de ton joli morceau de script récupéré ?!

Si tu veux du répondant, tu gagneras à poser des questions claires et précises.

Qu'attends-tu ici, que demandes tu ?

A quel contexte voudrais-tu l'appliquer ?

Que peux-tu déjà faire toi-même ?

Met à disposition un classeur ou dossier partagé, initialisé, représentatif et préparé,

pour ceux qui voudront bien s'y pencher.

Voilà, à toi de t'aider, et le forum t'aidera...

A+

EMX

Rechercher des sujets similaires à "scrip convertir googlesheet pdf envoyer mail"