Google Apps脚本创建的文件不是PDF

时间:2015-03-16 12:07:31

标签: pdf google-apps-script

我尝试使用以下代码创建PDF文件:

var name = "test.pdf";
  var url = 'https://docs.google.com/spreadsheets/d/' + newSpreadsheetID + '/export?exportFormat=pdf&format=pdf' +
  '&size=A4' + 
  '&portrait=true' + 
  '&fitw=true' +       // fit to width, false for actual size
  '&sheetnames=false&printtitle=false&pagenumbers=false' +
  '&gridlines=false' + 
  '&fzr=false' +       // do not repeat frozen rows on each page
  '&gid='+SheetID;       //the sheet's Id

  var pdf = UrlFetchApp.fetch(url);
  var pdf = pdf.getBlob().setName(name);

  DocsList.createFile(pdf);

此代码创建一个文件,但该文件只包含纯文本,你们可以帮我把它变成PDF格式吗?

2 个答案:

答案 0 :(得分:0)

首先,不推荐使用DocsList(https://developers.google.com/apps-script/reference/docs-list/docs-list)。所以我认为我们这次应该使用DriveApp。

我忽略了用于格式化pdf的参数,脚本可以简单地为 -

var sheet = DriveApp.getFileById(spreadsheetId);
DriveApp.createFile(sheet.getAs("application/pdf"));

如果您想进一步详细说明,请与我们联系。 :)

答案 1 :(得分:0)

我做了一些改动,让你的电话正常工作。我不知道导出设置的文档在哪里,但其中一些不能工作,例如"网格线"。以下是同一事物的2行示例。

function makePDF(){

var newSpreadsheetID = SpreadsheetApp.getActive().getId()
var SheetID="Sheet1";

var name = "test.pdf";
  var url = 'https://docs.google.com/spreadsheets/d/' + newSpreadsheetID + '/export?exportFormat=pdf&format=pdf'; +
  '&size=A4' + 
  '&portrait=true' + 
  '&fitw=true' +       // fit to width, false for actual size
  '&sheetnames=false&printtitle=false&pagenumbers=false' +
  '&gridlines=false' + 
  '&fzr=false'; +       // do not repeat frozen rows on each page
  '&gid='+SheetID;       //the sheet's Id

var pdf = UrlFetchApp.fetch(url,{headers: {authentication:"Bearer " + ScriptApp.getOAuthToken()}, muteHttpExceptions:true}).getBlob();
  pdf.setName(name);
DriveApp.createFile(pdf);

}

function simplePDFConvert(){
     var ss = SpreadsheetApp.openById( spreadSheetId );
     DriveApp.createFile(ss.getBlob());
}