Google UI Apps脚本:将电子表格转换为PDF时为空白PDF

时间:2014-02-21 06:27:58

标签: pdf google-apps-script

我正在测试一段代码,试图学习如何使用Google UI Apps脚本将电子表格转换为PDF格式。代码创建并写入电子表格,但pdf附件为空白。非常感谢任何有助于实现这一目标的帮助。感谢。

var newSpreadsheet = SpreadsheetApp.create("My Test Sheet");
var columnNames = ["First Name", "Last Name", "Department"];
newSpreadsheet.getSheetByName('Sheet1').activate();

var headersRange = newSpreadsheet.getActiveSheet().getRange(1, 1, 1, columnNames.length);
headersRange.setValues([columnNames]);

var pdf = DocsList.getFileById(newSpreadsheet.getId()).getAs('application/pdf').getBytes();
var attach = {fileName:'My Test PDF.pdf',content:pdf, mimeType:'application/pdf'};

// Send email 
MailApp.sendEmail("myemail@email.com", "subject", "message", {attachments:[attach]});

1 个答案:

答案 0 :(得分:0)

您不应再使用DocList了。请改用DriveApp。在您的代码几乎没有修改的解决方案下面:

function toPdf(id){
 SpreadsheetApp.flush();
// var ssDoc = DriveApp.getFileById(SpreadsheetApp.getActiveSpreadsheet().getId());
  var ssDoc = DriveApp.getFileById(id);
 var pdf = DriveApp.createFile(ssDoc.getAs(MimeType.PDF));
  return pdf.getBlob().getBytes();
}


function user2943227(){
  var newSpreadsheet = SpreadsheetApp.create("My Test Sheet");
  var columnNames = ["First Name", "Last Name", "Department"];
//  newSpreadsheet.getSheetByName('Sheet1').activate();

  var headersRange = newSpreadsheet.getActiveSheet().getRange(1, 1, 1, columnNames.length);
  headersRange.setValues([columnNames]);

//  var pdf = DocsList.getFileById(newSpreadsheet.getId()).getAs('application/pdf').getBytes();
  var pdf = toPdf(newSpreadsheet.getId());
  var attach = {fileName:'My Test PDF.pdf',content:pdf, mimeType:'application/pdf'};

  // Send email 
  MailApp.sendEmail("myemail@email.com", "subject", "message", {attachments:[attach]});

}