Creating PDF in Landscape (Google Apps Script)

大城市里の小女人 提交于 2019-11-28 01:49:11

问题


I'm trying to work out how to create a PDF document through Google Apps Script which is displayed in landscape orientation (A4 size). This is the code I'm using to create the PDF so far, which comes out in portrait orientation.

function pdfSheet() {
  var d = new Date();
  var cdate = d.getDate();
  var cmonth = d.getMonth() + 1;
  var cyear = d.getFullYear();
  var current = [cdate + "-" + cmonth + "-" + cyear];

  var imageBlob = UrlFetchApp.fetch("https://sites.google.com/site/mysite/smalllogo.png").getBlob();
  var base64EncodedBytes = Utilities.base64Encode(imageBlob.getBytes());
  var logo = "<img src='data:image/png;base64," + base64EncodedBytes + "' width='170'/>";


  var html = "<table width='100%'><tr><td align='right'>" + logo + "<br><br><b>Date:</b> " + current + "</td></tr></table>"; //PDF content will carry on here.

  var gmailLabels  = "PDF";  
  var driveFolder  = "My Gmail";
  var folders = DriveApp.getFoldersByName(driveFolder);
  var folder = folders.hasNext() ? 
    folders.next() : DriveApp.createFolder(driveFolder);

  var subject = 'Test PDF';


  var tempFile = DriveApp.createFile("temp.html", html, "text/html");
  var page = folder.createFile(tempFile.getAs("application/pdf")).setName(subject + ".pdf")
  tempFile.setTrashed(true); 

  var link = page.getUrl();
  Logger.log(link);

}

回答1:


I took most of this from another user and edited to have the current days date (in EST) in the email subject and the PDF name. Hope it helps!

// Simple function to send Daily Status Sheets
// Load a menu item called "Project Admin" with a submenu item called "Send Status"
// Running this, sends the currently open sheet, as a PDF attachment
function onOpen() {
  var submenu = [{name:"Send Status", functionName:"exportSomeSheets"}];
  SpreadsheetApp.getActiveSpreadsheet().addMenu('Project Admin', submenu);  
}

 function creatPDF() {
  SpreadsheetApp.flush();

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  //Date set with format in EST (NYC) used in subject and PDF name
  var period = Utilities.formatDate(new Date(), "GMT+5", "yyyy.MM.dd");
  var url = ss.getUrl();

  //remove the trailing 'edit' from the url
  url = url.replace(/edit$/, '');

  //additional parameters for exporting the sheet as a pdf
  var url_ext = 'export?exportFormat=pdf&format=pdf' + //export as pdf
    //below parameters are optional...
    '&size=letter' + //paper size
    '&portrait=false' + //orientation, false for landscape
    '&fitw=true' + //fit to width, false for actual size
    '&sheetnames=false&printtitle=false&pagenumbers=false' + //hide optional headers and footers
    '&gridlines=false' + //hide gridlines
    '&fzr=false' + //do not repeat row headers (frozen rows) on each page
    '&gid=' + sheet.getSheetId(); //the sheet's Id

  var token = ScriptApp.getOAuthToken();

  var response = UrlFetchApp.fetch(url + url_ext, {
    headers: {
      'Authorization': 'Bearer ' + token
    }
  });

  var blob = response.getBlob().setName(ss.getName() + " " + period + '.pdf');

  //from here you should be able to use and manipulate the blob to send and email or create a file per usual.
   var email = 'email@co-email.com'; 
   var subject = "subject line " + period ;
    var body = "Please find attached your Daily Report.";
//Place receipient email between the marks
    MailApp.sendEmail( email, subject, body, {attachments:[blob]});


}


来源:https://stackoverflow.com/questions/26150732/creating-pdf-in-landscape-google-apps-script

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!