在横向创建PDF(Google Apps脚本)

时间:2014-10-01 21:11:47

标签: pdf google-apps-script orientation blob

我试图找出如何通过横向显示(A4尺寸)的Google Apps脚本创建PDF文档。这是我目前用于创建PDF的代码,它以纵向显示。

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 个答案:

答案 0 :(得分:3)

我从其他用户那里获取了大部分信息,并进行了编辑,以使电子邮件主题和PDF名称具有当前日期(美国东部标准时间)。希望能帮助到你!

// 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]});


}