Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Google apps script PDF fit to page

I'm using a script to create a PDF-file of a sheet and save it. Everything works great except I can't figure out how to make it "fit whole page". The code below is for "fit to width" (fitw=true) which is described numerous places – but I can't find how to fit to page instead.

function savePdf(spreadsheetId, sheetName, pdfName, pdfFolderId) {
  
  var sheetId = spreadsheetId.getSheetByName(sheetName).getSheetId();
  var url_base = spreadsheetId.getUrl().replace(/edit$/,'');
  
  var url_ext = 'export?exportFormat=pdf&format=pdf'
  + '&gid=' + sheetId
  // following parameters are optional...
  + '&range=D4:AX74'
  + '&size=A4'      // paper size: legal / letter / A4
  + '&portrait=false'    // orientation, false for landscape
  + '&fitw=true'        // fit to width, false for actual size
  + '&top_margin=0.50'
  + '&bottom_margin=0.50'
  + '&left_margin=0.50'
  + '&right_margin=0.50'
  + '&sheetnames=false' // 
  + '&printtitle=false'
  + '&pagenumbers=false'  //hide optional headers and footers
  + '&gridlines=false'  // hide gridlines
  + '&fzr=true';       // false = do not repeat row headers (frozen rows) on each page
  var url_options = {headers: {'Authorization': 'Bearer ' + ScriptApp.getOAuthToken(),}};
  var response = UrlFetchApp.fetch(url_base + url_ext, url_options);
  var blob = response.getBlob().getAs('application/pdf').setName(pdfName + '.pdf');
  var folder = DriveApp.getFolderById(pdfFolderId);
  folder.createFile(blob);
}
like image 456
Simon Gade Avatar asked Sep 17 '25 06:09

Simon Gade


2 Answers

I've found a solution! It's to add + '&scale=' + scale
// 1 = Normal 100% -- 2 = Fit to width -- 3 = Fit to height -- 4 = Fit to Page

like image 139
Simon Gade Avatar answered Sep 19 '25 15:09

Simon Gade


This should do it:

&horizontal_alignment=CENTER

like image 24
Nelly Avatar answered Sep 19 '25 16:09

Nelly