将 Google 电子表格导出为 PDF 时包含工作表名称

问题描述 投票:0回答:1

我正在使用 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 脚本是否也支持此功能? enter image description here

google-apps-script google-apps export-to-pdf
1个回答
3
投票

.getAs()
方法不允许使用参数,但您可以使用电子表格 API,您可以在其中选择“普通”Ui 中可用的所有参数。 请参阅此帖子答案了解如何使用它,然后点击github链接

这是演示代码,因为参考中的代码存在一些不一致之处。 (只是为了举例说明导出带有网格和标题的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  
*/
© www.soinside.com 2019 - 2024. All rights reserved.