使用Google Apps脚本将Google电子表格导出为PDF时,请包含工作表名称

时间:2014-01-16 17:04:15

标签: google-apps-script google-apps

我正在使用Google Apps脚本将Google电子表格导出为PDF格式,并希望在PDF页面上“包含工作表名称”。这可以通过代码实现吗?

var spreadsheetFile = DocsList.getFileById(spreadsheet_id);
var blob = spreadsheetFile.getAs('application/pdf'); 
blob.setName(spreadsheetFile.getName());
DocsList.getFolder(file_destination).createFile(blob); 

在电子表格应用程序中,它在UI中受支持,所以我想知道Apps Scripts是否也支持这个? enter image description here

1 个答案:

答案 0 :(得分:3)

.getAs()方法不允许参数,但您可以使用电子表格api,您可以在其中选择“普通”Ui中的所有可用参数。 请参阅此post answer以了解如何使用它,并按照github link

进行操作

这是演示代码,因为ref中的代码有一些不一致。 (仅举例说明使用网格和标题导出sheet1)

请注意,这将要求2个不同的授权。

function test(){
  var key = "0AnqSFd3iikE3dFd1WEVhMFhYczM5VWpuNDZHQ3AwZEE";
  var pdf = spreadsheetToPDF(key);
  DocsList.createFile(pdf);
}

function spreadsheetToPDF(key) {

  var oauthConfig = UrlFetchApp.addOAuthService("spreadsheets");
  var scope = "https://spreadsheets.google.com/feeds"

  oauthConfig.setConsumerKey("anonymous");
  oauthConfig.setConsumerSecret("anonymous");
  oauthConfig.setRequestTokenUrl("https://www.google.com/accounts/OAuthGetRequestToken?scope="+scope);
  oauthConfig.setAuthorizationUrl("https://accounts.google.com/OAuthAuthorizeToken");    
  oauthConfig.setAccessTokenUrl("https://www.google.com/accounts/OAuthGetAccessToken");  

  var requestData = {
    "oAuthServiceName": "spreadsheets",
    "oAuthUseToken": "always",
  };

  var name = DocsList.getFileById(key).getName()+".pdf";

  var pdf = UrlFetchApp.fetch("https://spreadsheets.google.com/feeds/download/spreadsheets/Export?key="+key+
                              "&exportFormat=pdf&gid=0&gridlines=true&printtitle=true&size=A4&sheetnames=true&fzr=true&portrait=true&fitw=true", requestData).getBlob().setName(name);

  return pdf;
}

/*
fmcmd=12
size=legal/A4
fzr=true/false
portrait=false/true
fitw=true/false
gid=0/1/2  
gridlines=false/true
printtitle=false/true
sheetnames=false/true
pagenum=UNDEFINED
attachment=false/true  
*/