Google Sheets Sauvegarde PDF mais avec nom de cell

Temjeh

XLDnaute Accro
Supporter XLD
Bonjour et merci de votre temps

Je ne sais pas si on peux m'aider pour un script Google Sheets trouvé sur le net.

J'ai ce code qui fonctionne bien mais il sauvegarde juste avec le nom du classeur.
Est-ce possible qu'il sauvegarde avec le nom de facture en i11 (résultat d'une formule)?

Bonne journée!
Temjeh

JavaScript:
function buttonprtPDF() {

  var ss = SpreadsheetApp.getActiveSpreadsheet()
  var sprsheetid = "ss.getId()";
  var sheetid = ss.getSheetId();

  var ssa = SpreadsheetApp.getActive();
  var sheet = ssa.getSheets()[0]; //Query Sheet
  var lastRow = sheet.getLastRow();
  var lastColumn = sheet.getLastColumn();

  //All requests must include id in the path and a format parameter
  //"https://docs.google.com/spreadsheets/d/"+sprsheetid+"/export?"

  //FORMATS WITH NO ADDITIONAL OPTIONS
  //format=xlsx       //excel
  //format=ods        //Open Document Spreadsheet
  //format=zip        //html zipped       

  //CSV,TSV OPTIONS***********
  //format=csv        // comma seperated values
  //             tsv        // tab seperated values
  //gid=sheetId             // the sheetID you want to export, The first sheet will be 0. others will have a uniqe ID

  // PDF OPTIONS****************
  //format=pdf   
  //size=0,1,2..10             paper size. 0=letter, 1=tabloid, 2=Legal, 3=statement, 4=executive, 5=folio, 6=A3, 7=A4, 8=A5, 9=B4, 10=B5
  //fzr=true/false             repeat row headers
  //portrait=true/false        false =  landscape
  //fitw=true/false            fit window or actual size
  //gridlines=true/false
  //printtitle=true/false
  //pagenum=CENTER/UNDEFINED      CENTER = show page numbers / UNDEFINED = do not show
  //attachment = true/false      dunno? Leave this as true
  //gid=sheetId                 Sheet Id if you want a specific sheet. The first sheet will be 0. others will have a uniqe ID.
                               // Leave this off for all sheets.
  // EXPORT RANGE OPTIONS FOR PDF
  //need all the below to export a range
  //gid=sheetId                must be included. The first sheet will be 0. others will have a uniqe ID
  //ir=false                   seems to be always false
  //ic=false                   same as ir
  //r1=Start Row number - 1        row 1 would be 0 , row 15 wold be 14
  //c1=Start Column number - 1     column 1 would be 0, column 8 would be 7 
  //r2=End Row number
  //c2=End Column number

  var printRange = '&c1=0' + '&r1=0' + '&c2='+9  + '&r2='+45; // B2:APn

  var url= ss.getUrl().replace(/edit$/, '') +
  "export?exportFormat=pdf&" +
  "format=pdf&"+
  "fmcmd=12&"+
  "size=0&"+
  "fzr=true&"+
  "gid="+sheetid+"&"+
  "sheetnames=false&"+
  "pagenum=UNDEFINED&"+
  "gridlines=false&"+
  "portrait=true&"+
  "scale=2&"+
  "fitw=true&"+
  "horizontal_alignment=CENTER&"+
  "top_margin=0.60&"+
  "bottom_margin=0.10&"+
  "left_margin=0.20&"+
  "right_margin=0.20&"+
  "attachment=true&"+ printRange;


  var html = "<script>window.open('" + url + "');google.script.host.close();</script>";
  var userInterface = HtmlService.createHtmlOutput(html)
  .setHeight(10)
  .setWidth(100);
  SpreadsheetApp.getUi().showModalDialog(userInterface, 'Downloading PDF ... ');
}
 

Staple1600

XLDnaute Barbatruc
Re

Si j'ai bien compris en début de code, il faudrait faire
var nomPDF = sheet.getRange('I11).getValue();
Puis dans cette partie
// Concaténons le tout
var docName = nomPDF;

NB: A tester avec le code présent sur le site que je cite
(voir chapitre Code complet)
 

Temjeh

XLDnaute Accro
Supporter XLD
Bonjour, Québec 6AM

Oui simplement copié/collé et sous un bouton assigné le script onOpen

Après y avoir entrer les bonnes infos dans les cellules, date, client ...
Si je passe par le menu ajouté dans las barre, erreur.

Le problème semble ici

Aussi si j'exécute directement savePDF() en ajoutant tes 2 lignes erreur. (voir image)

Merci de ton temps
 

Pièces jointes

  • 1609327780975.png
    1609327780975.png
    7 KB · Affichages: 23
  • 1609329321636.png
    1609329321636.png
    15.2 KB · Affichages: 24
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re

Je n'ai pas écrit que j'arrétais mes recherches mais qu'elle seraient chronophages ;)
Si ton code fonctionne trés bien (tu peux le publier ici) pour le bénéfice des XLDiens, stp?
(Je parle de ton code modifié pour renommer le pdf avec la valeur d'une cellule)
 

Temjeh

XLDnaute Accro
Supporter XLD
Oui le voici

De ma feuille principale Factures/Dépenses va à feuille PRINT
Nom du classeur en feuille PRINT i9
Renomme ce classeur Facture/Invoice et renomme la feuille de la valeur de i11
Sauvegarde Plage a1:i45 (var printRange) en PDF au nom de la feuille changé par numéro de facture 123456 - Facture/Invoice
Renomme classeur et feuille avec nom original
Retour sur mon autre feuille Factures/Dépenses

A+

JavaScript:
function buttonprtPDF() {
/////////////////////////Active la feuille PRINT
  var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Print'), true);
//////////////////Renomme classeur par numéro de facture pour nom de sauvegarde
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var a1 = ss.getRange("i11").getValue();
  var name = a1+" ";
  ss.rename(name);
///////////////Rename la feuille pour nom de sauvegarde
  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); // Get Active spreadsheet object
  var sh = spreadsheet.getActiveSheet(); // Get Active sheet's object
  sh.setName("Facture/Invoice");
//////////////Prepare le save as
  var ss = SpreadsheetApp.getActiveSpreadsheet()
  var sprsheetid = "ss.getId()";
  var sheetid = ss.getSheetId();
  var ssa = SpreadsheetApp.getActive();
  var sheet = ssa.getSheets()[0]; //Query Sheet
  var lastRow = sheet.getLastRow();
  var lastColumn = sheet.getLastColumn();
  var printRange = '&c1=0' + '&r1=0' + '&c2='+9  + '&r2='+45; // B2:APn
////////////////Setting du PDF. Voir notes et bas de ce module
  var url= ss.getUrl().replace(/edit$/, '') +
  "export?exportFormat=pdf&" +
  "format=pdf&"+
  "fmcmd=12&"+
  "size=0&"+
  "fzr=true&"+
  "gid="+sheetid+"&"+
  "sheetnames=false&"+
  "pagenum=UNDEFINED&"+
  "gridlines=false&"+
  "portrait=true&"+
  "scale=2&"+
  "fitw=true&"+
  "horizontal_alignment=CENTER&"+
  "top_margin=0.60&"+
  "bottom_margin=0.10&"+
  "left_margin=0.20&"+
  "right_margin=0.20&"+
  "attachment=true&"+ printRange;
  var html = "<script>window.open('" + url + "');google.script.host.close();</script>";
  var userInterface = HtmlService.createHtmlOutput(html)
  .setHeight(10)
  .setWidth(100);
  SpreadsheetApp.getUi().showModalDialog(userInterface, 'Downloading PDF ... ');
///Attend et renomme le classeur par 2021
    Utilities.sleep(8000);
//////////////Rename Sheet
  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); // Get Active spreadsheet object
  var sh = spreadsheet.getActiveSheet(); // Get Active sheet's object
  sh.setName("Print");
//////////////////Rename Classeur
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var name = ss.getRange("i9").getValue();
  ss.rename(name);
///////////////Selectionne la feuille Facture
  var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Factures/Dépenses'), true);
}

/////////NOTES pour save as PDF
//All requests must include id in the path and a format parameter
  //"https://docs.google.com/spreadsheets/d/"+sprsheetid+"/export?"
  //FORMATS WITH NO ADDITIONAL OPTIONS
  //format=xlsx       //excel
  //format=ods        //Open Document Spreadsheet
  //format=zip        //html zipped        
  //CSV,TSV OPTIONS***********
  //format=csv        // comma seperated values
  //             tsv        // tab seperated values
  //gid=sheetId             // the sheetID you want to export, The first sheet will be 0. others will have a uniqe ID
  // PDF OPTIONS****************
  //format=pdf   
  //size=0,1,2..10             paper size. 0=letter, 1=tabloid, 2=Legal, 3=statement, 4=executive, 5=folio, 6=A3, 7=A4, 8=A5, 9=B4, 10=B5
  //fzr=true/false             repeat row headers
  //portrait=true/false        false =  landscape
  //fitw=true/false            fit window or actual size
  //gridlines=true/false
  //printtitle=true/false
  //pagenum=CENTER/UNDEFINED      CENTER = show page numbers / UNDEFINED = do not show
  //attachment = true/false      dunno? Leave this as true
  //gid=sheetId                 Sheet Id if you want a specific sheet. The first sheet will be 0. others will have a uniqe ID.
                               // Leave this off for all sheets.
  // EXPORT RANGE OPTIONS FOR PDF
  //need all the below to export a range
  //gid=sheetId                must be included. The first sheet will be 0. others will have a uniqe ID
  //ir=false                   seems to be always false
  //ic=false                   same as ir
  //r1=Start Row number - 1        row 1 would be 0 , row 15 wold be 14
  //c1=Start Column number - 1     column 1 would be 0, column 8 would be 7 
  //r2=End Row number
  //c2=End Column number
}
 
Dernière édition:

Discussions similaires