为什么此脚本会发送损坏的 PDF?
Why does this script send a corrupted PDF?
我已将我的代码重写为 ,但它并没有解决我脚本的问题。它发送带有 pdf 附件的电子邮件,我没有收到任何错误,但我无法打开该文件。我已经尝试了 Whosebug 上发布的多种解决方案。
什么可能导致 pdf 在发送后损坏?我重组了我的 url,但运气不好。
function emailPDF() {
SpreadsheetApp.flush();
var ss = SpreadsheetApp.openByUrl('url')
var sheet = ss.getSheetByName('Reviews Due');
var row = 2;
var col = 2;
var test = sheet.getRange(row,col).getValue();
if (test == "New Employee Reviews"){
var token = ScriptApp.getOAuthToken();
var params = {
headers: {
'Authorization': 'Bearer ' + token,
},
'muteHttpExceptions' : true
};
var sheetId = sheet.getSheetId();
var url_base = "https://docs.google.com/spreadsheets/d/" + ss.getId() + "/" + "export?";
var url_ext = 'exportFormat=pdf'
+ '&format=pdf'
+ '&gid=' + sheetId
+ '&size=letter'
+ '&portrait=false'
+ '&fitw=true'
+ '&sheetnames=false'
+ '&printtitle=false'
+ '&pagenumbers=false'
+ '&gridlines=false'
+ 'fzr=false';
var response = UrlFetchApp.fetch(url_base + url_ext, params);
var blob = response.getBlob().setName("Reviews Due" + ".pdf");
这是点差urlsheet:
https://docs.google.com/spreadsheets/d/1wmnw9Nl6B0e8IgVDgTEtGLzWhh1ssSgCLiOMsgs6Z64/edit#gid=1633156004
这是我将 sheet 导出为 pdf 时的 url:
file:///C:/Users/gwaldo/Downloads/Master%20Progression%20Schedule%20-%20Reviews%20Due.pdf
当我更改 blob 变量以包含 getAs() 时,这里是它导出的 pdf:non corrupted pdf, but no data
Logger.log(url_base + url_ext) = https://docs.google.com/spreadsheets/d/1wmnw9Nl6B0e8IgVDgTEtGLzWhh1ssSgCLiOMsgs6Z64/export?Format=pdf&format=pdf&gid=1633156004&size=letter&portrait=false&fitw=true&sheetnames=false&printtitle=false&pagenumbers=false&gridlines=falsefzr=false
%PDF-1.4%����40obj<</Type/Catalog/Names<<
/JavaScript30R>>/PageLabels<</Nums[0<</S/D/St1>>]>>
/Outlines20R/Pages10R>>endobj50obj<</Creator(��
<!DOCTYPE html><html lang="en"><head><meta name="description" content="Web
word processing, presentations and spreadsheets"><meta name="viewport"
content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-
scale=1.0, user-scalable=0"><link rel="shortcut icon"
href="//ssl.gstatic.com/docs/common/drive_favicon1.ico"><title>Page Not
Found</title><meta name="referrer" content="origin"><link
href="//fonts.googleapis.com/css?family=Product+Sans" rel="stylesheet"
type="text/css"><style nonce="L3gm1PN3u9lyxQbOyJWDIQ">
400 根据 RFC2616
的状态代码是
10.4.1 400 Bad Request
The request could not be understood by the server due to malformed syntax.
似乎有一个查询参数的语法无法理解或格式不正确。只需添加 var url_ext='format=pdf'
即可帮助隔离问题。通过 OP 测试每个参数后,似乎 fzr=false
导致了问题,因为它在
之前缺少 &
我已将我的代码重写为
什么可能导致 pdf 在发送后损坏?我重组了我的 url,但运气不好。
function emailPDF() {
SpreadsheetApp.flush();
var ss = SpreadsheetApp.openByUrl('url')
var sheet = ss.getSheetByName('Reviews Due');
var row = 2;
var col = 2;
var test = sheet.getRange(row,col).getValue();
if (test == "New Employee Reviews"){
var token = ScriptApp.getOAuthToken();
var params = {
headers: {
'Authorization': 'Bearer ' + token,
},
'muteHttpExceptions' : true
};
var sheetId = sheet.getSheetId();
var url_base = "https://docs.google.com/spreadsheets/d/" + ss.getId() + "/" + "export?";
var url_ext = 'exportFormat=pdf'
+ '&format=pdf'
+ '&gid=' + sheetId
+ '&size=letter'
+ '&portrait=false'
+ '&fitw=true'
+ '&sheetnames=false'
+ '&printtitle=false'
+ '&pagenumbers=false'
+ '&gridlines=false'
+ 'fzr=false';
var response = UrlFetchApp.fetch(url_base + url_ext, params);
var blob = response.getBlob().setName("Reviews Due" + ".pdf");
这是点差urlsheet: https://docs.google.com/spreadsheets/d/1wmnw9Nl6B0e8IgVDgTEtGLzWhh1ssSgCLiOMsgs6Z64/edit#gid=1633156004
这是我将 sheet 导出为 pdf 时的 url: file:///C:/Users/gwaldo/Downloads/Master%20Progression%20Schedule%20-%20Reviews%20Due.pdf
当我更改 blob 变量以包含 getAs() 时,这里是它导出的 pdf:non corrupted pdf, but no data
Logger.log(url_base + url_ext) = https://docs.google.com/spreadsheets/d/1wmnw9Nl6B0e8IgVDgTEtGLzWhh1ssSgCLiOMsgs6Z64/export?Format=pdf&format=pdf&gid=1633156004&size=letter&portrait=false&fitw=true&sheetnames=false&printtitle=false&pagenumbers=false&gridlines=falsefzr=false
%PDF-1.4%����40obj<</Type/Catalog/Names<<
/JavaScript30R>>/PageLabels<</Nums[0<</S/D/St1>>]>>
/Outlines20R/Pages10R>>endobj50obj<</Creator(��
<!DOCTYPE html><html lang="en"><head><meta name="description" content="Web
word processing, presentations and spreadsheets"><meta name="viewport"
content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-
scale=1.0, user-scalable=0"><link rel="shortcut icon"
href="//ssl.gstatic.com/docs/common/drive_favicon1.ico"><title>Page Not
Found</title><meta name="referrer" content="origin"><link
href="//fonts.googleapis.com/css?family=Product+Sans" rel="stylesheet"
type="text/css"><style nonce="L3gm1PN3u9lyxQbOyJWDIQ">
400 根据 RFC2616
的状态代码是
10.4.1 400 Bad Request
The request could not be understood by the server due to malformed syntax.
似乎有一个查询参数的语法无法理解或格式不正确。只需添加 var url_ext='format=pdf'
即可帮助隔离问题。通过 OP 测试每个参数后,似乎 fzr=false
导致了问题,因为它在
&