来自Google Sheet exportLink [' application / pdf']的UrlFetch不会返回PDF数据

时间:2015-06-29 13:15:22

标签: google-apps-script google-sheets

我创建并发送定期电子邮件作为Google表格的更新。出于各种客户原因,这可以通过3种方式完成,作为工作表的链接,以及附件(PDFXLSX)。

这是最近的工作。 XSLX附件仍然有效,但PDF不再作为UrlFetchfile.exportLinks('application/pdf')网址的响应发送。无论请求标头是什么,它始终返回Content-Type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"

其他未记载的内容是否因我在这里丢失而改变了?

function exportAsPDF(spreadsheetId) {
  spreadsheetId = spreadsheetId || 'SECRET_ID';

  var file = Drive.Files.get(spreadsheetId),
      url = file.exportLinks['application/pdf'];

  url += '&format=pdf&size=7&fzr=true&portrait=true&fitw=true&gid=0&gridlines=false&printtitle=false&sheetnames=false&pagenum=UNDEFINED&attachment=true'

  var token = ScriptApp.getOAuthToken(),
      response = UrlFetchApp.fetch(url, {
          headers: {
              'Authorization': 'Bearer ' +  token
          }
      });

  var headers = response.getAllHeaders(); // revealing content-type returned isn't pdf
  var pdfBlob = response.getBlob().getAs('application/pdf');      
  var pdfString = pdfBlob.getDataAsString(); // this naturally throws an error

  return response.getBlob(); // this returns to the send mail script
}

1 个答案:

答案 0 :(得分:2)

我可以使用Convert all sheets to PDF with Google Apps Script中的实用程序获取PDF。

该工作脚本将电子表格的编辑URL修改为导出URL,如下所示:

https://docs.google.com/spreadsheets/d/<%SS-ID%>/export?exportFormat=pdf...

高级云端硬盘服务提供了格式为:

的导出网址
https://docs.google.com/spreadsheets/export?id=<%SS-ID%>&exportFormat=pdf...

我希望exportLinks提供的网址比工作脚本中的黑客更可靠。显然,它不是。

这已被提升为Issue 5114。明星它接收更新。