【问题标题】:Why does this script send a corrupted PDF?为什么此脚本会发送损坏的 PDF?
【发布时间】:2020-12-20 18:44:40
【问题描述】:

我已将我的代码重写为match the other answers for similar issues,但它并没有解决我的脚本问题。它发送带有 pdf 附件的电子邮件,我没有收到任何错误,但我无法打开文件。我已经尝试过在 stackoverflow 上发布的多种解决方案。

什么可能导致 pdf 在发送后损坏?我已经重组了我的网址,但没有运气。

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");

这是电子表格的网址: https://docs.google.com/spreadsheets/d/1wmnw9Nl6B0e8IgVDgTEtGLzWhh1ssSgCLiOMsgs6Z64/edit#gid=1633156004

这是我将工作表导出为 pdf 时的网址: 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">

【问题讨论】:

标签: pdf google-apps-script google-sheets gmail http-status-code-400


【解决方案1】:

400 根据RFC2616的状态码是

10.4.1 400 错误请求

由于语法错误,服务器无法理解请求。

似乎其中一个查询参数的语法不被理解或格式错误。只需添加var url_ext='format=pdf' 就有助于隔离问题。通过OP测试每个参数后,似乎fzr=false引起了问题,因为它之前缺少&amp;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-10-23
    • 1970-01-01
    • 2021-05-20
    • 2021-06-02
    • 2015-03-14
    • 1970-01-01
    • 2015-01-01
    • 2015-05-24
    相关资源
    最近更新 更多