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 :

  1. L'onglet à imprimer est test_F
  2. L'adresse mail est en H2
  3. Le nombre de lignes à imprimer est en I2
  4. Le nombre de colonnes à imprimer correspond aux colonnes de l'onglet (ici jusqu'à M)
  5. J'ai masqué la colonne J qui doit rester masquée dans le pdf
  6. Je veux conserver toutes les mises en forme (couleur, bordure, fusion de cellules)
  7. J'ai une image à conserver en K2
  8. 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é
  9. Il y a 1 onglet masqué qui doit rester masqué une fois le script terminé
  10. 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"
        }]
    });

}  

Bonjour,

Un grand merci !!!! Ca fonctionne super bien !!

J'ai changé la couleur de la police, mais il y a bien l'adresse mail en H2 :

image

Comment je peux indiquer au script de générer le pdf jusque la ligne X ?

Le nombre de lignes à faire est en I2 :

image

Pour le reste, c'est parfait, encore merci !!

J'ai chopé un bout de code, et ça fonctionne en déclarant une variable, merci !!!

Rechercher des sujets similaires à "script envoyer mail"