我创建并发送定期电子邮件作为Google表格的更新。出于各种客户原因,这可以通过3种方式完成,作为工作表的链接,以及附件(PDF
和XLSX
)。
这是最近的工作。 XSLX附件仍然有效,但PDF不再作为UrlFetch
对file.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
}
答案 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。明星它接收更新。