Générer un PDF d'une feuille par rapport aux case coché d'une autre feuille

Bonjour à tous,

Help me !!!

Je souhaite générer un PDF sur une deuxième feuille qui me servirait à envoyer un PDF à des entreprises et je voudrais automatiser tout ça.

Pour cela sur ma première feuille : j'aimerais qu'à chaque fois que je rentre un chiffre dans ma colonne "G", les cases à cocher dans ma colonne "H" se coche automatiquement si il y un chiffre ou non. (Je pense avoir trouvé une solution avec une formule et une validation des données pour cette question) mais je ne suis pas contre si vous avez un script aussi pour cette problématique là.

Suite à cela j'aimerais qu'à chaque cases cocher cela me génère un PDF de ma deuxième feuille qui est un résumé de ma première feuille que je fusionnerai ensuite avec d'autre pdf externe et tout ça avec un script.

Voici la feuille sheet que j'utilise ci dessous :

https://docs.google.com/spreadsheets/d/1a6URKXHOZL2lphZUckKsxmXQt8qKVyN4kkN_tR5XPaw/edit#gid=7480284...

Merci d'avance pour votre aide

Cdt

Bonjour,

Une fois que vous avez votre déclencheur, voici un script permettant d'exporter en PDF + envoyer par e-mail :

function savePDF()
{
// Selection de la feuille à PDFiser
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();

//générer URL de la feuille
    var ssUrl = ss.getUrl();
    var sheetId= sheet.getSheetId();

    var url = ssUrl.replace(/\/edit.*$/,'') // ici sont indiquées les caractéristiques de l'impression PDF, il necessite d'adapter les marges, orientation en fonction de vos données.
      + '/export?exportformat=pdf&format=pdf'
      + '&size=A4'
      + '&portrait=true'
      + '&fitw=true'
      + '&top_margin=-0.95'
      + '&bottom_margin=0.50'          
      + '&left_margin=0.50'             
      + '&right_margin=0.50'           
      + '&sheetnames=false'
      + '&printtitle=false'
      + '&pagenum=false'
      + '&gridlines=false'
      + '&fzr=FALSE'
      + '&gid='+sheetId;

  // Création du nom du PDF, dans mon cas une cellule située en A6, vous pouvez y mettre un nom directement, ou bien un autre celulle.
  var docName =  sheet.getRange('A6').getValue();
// CRÉER LE PDF A PARTIR DE L'URL
  var token = ScriptApp.getOAuthToken();
  var docurl = UrlFetchApp.fetch(url, { headers: { 'Authorization': 'Bearer ' +  token } });
  var pdf = docurl.getAs('application/pdf').setName(docName);
  var file = DriveApp.createFile(pdf);

  // enregistrement du PDF dans le Drive
  var folder = DriveApp.getFolderById("17LmzDRgffgzPpH3zt_4fGLnGXbBWbQNo5");/* Important ! > Ici on doit mettre l'adresse du dossier drive où on veut sauvegarder le PDF, allez dans votre dossier et dans la barre d'URL en haut copier le code qui ressemble à ça : 0AGuVhN09TP00Uk9PVA */
  var finalFile = file.moveTo(folder);
  var docUrl = finalFile.getUrl();

  // Envoi du PDF par mail
  var demandeurEmail = sheet.getRange('F5').getValue(); /* ici l'adresse mail de mon destinataire se situe dans une cellule, il est possible de changer directement l'information, ou de mettre une autre cellule */
  var message = "Bonjour"+"<p>Ci-joint le "+docName+"</p>"+"<a href='"+docUrl+"'>Cliquez ici pour ouvrir le recap.</a>"; // texte du mail
MailApp.sendEmail({to:demandeurEmail , subject: ""+docName, htmlBody:message}) ;

 // facultatif, cela sert à confirmer à l'utilisateur que le mail à  bien été envoyé
 var demandeur = "Prénom NOM"; // nom du destinataire
 var ui = SpreadsheetApp.getUi(); 
 ui.alert("Le "+ docName +" a bien été créé\n et été envoyé à "+ demandeur +" ");
}
}
Bonjour;

Super, merci beaucoup pour ce script mais le script ne marche pas ? je pense que j'ai mal rempli le script ou manqué des étapes.

Je reste encore novice dans le domaine du script serait-il possible d'avoir quelques explications par la même occasion s'il vous plaît.

Je n'ai pas encore fait le mail car je voudrais pouvoir visualiser le mail avant de pouvoir l'envoyer, est-ce possible ?

Par contre j'aimerais que mon export PDF se fasse par rapport au case cochée, c'est-à-dire qu'à chaque case qui se coche dans ma première feuille en colonne "H" mon script relève l'information et comprenne qu'il peut exporter la deuxième feuille en PDF.

Malgré mes recherches je n'ai trouvé aucun script correspondant à mes attentes, est-ce aussi possible ?

Cdt

Oui c'est largement réalisable, dans un premier temps voyez si l'export PDF fonctionne.

Le script est déjà commenté, les éléments à modifier sont signalés (nom du fichier, dossier Drive d'enregistrement)

function savePDF()
{
// Selection de la feuille à PDFiser
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();

//générer URL de la feuille
    var ssUrl = ss.getUrl();
    var sheetId= sheet.getSheetId();

    var url = ssUrl.replace(/\/edit.*$/,'') // ici sont indiquées les caractéristiques de l'impression PDF, il necessite d'adapter les marges, orientation en fonction de vos données.
      + '/export?exportformat=pdf&format=pdf'
      + '&size=A4'
      + '&portrait=true'
      + '&fitw=true'
      + '&top_margin=-0.95'
      + '&bottom_margin=0.50'          
      + '&left_margin=0.50'             
      + '&right_margin=0.50'           
      + '&sheetnames=false'
      + '&printtitle=false'
      + '&pagenum=false'
      + '&gridlines=false'
      + '&fzr=FALSE'
      + '&gid='+sheetId;

  // Création du nom du PDF, dans mon cas une cellule située en A6, vous pouvez y mettre un nom directement, ou bien un autre celulle.
  var docName =  sheet.getRange('A6').getValue();
// CRÉER LE PDF A PARTIR DE L'URL
  var token = ScriptApp.getOAuthToken();
  var docurl = UrlFetchApp.fetch(url, { headers: { 'Authorization': 'Bearer ' +  token } });
  var pdf = docurl.getAs('application/pdf').setName(docName);
  var file = DriveApp.createFile(pdf);

  // enregistrement du PDF dans le Drive
  var folder = DriveApp.getFolderById("17LmzDRgffgzPpH3zt_4fGLnGXbBWbQNo5");/* Important ! > Ici on doit mettre l'adresse du dossier drive où on veut sauvegarder le PDF, allez dans votre dossier et dans la barre d'URL en haut copier le code qui ressemble à ça : 0AGuVhN09TP00Uk9PVA */
  var finalFile = file.moveTo(folder);
  var docUrl = finalFile.getUrl();

J'ai finalement réussi à le faire fonctionner génial !!! Mais la page afficher n'est pas la bonne (voir pièce jointe), je pense qu'il s'agit juste de mieux orienter le script vers la page que j'exporte en PDF. Mais en tout cas merci beaucoup.

Suite à cela comme dit précédément dans mes anciens messages j'aimerais mettre une condition pour exporter le PDF suite aux case cocher. Avez-vous une idées de script ?

Cdt

capture

Bonjour,

Il y a un souci avec votre token (faites un log dessus pour voir si un token est bien généré) ou l'url (idem, faite un log dessus).

Rechercher des sujets similaires à "generer pdf feuille rapport case coche"