当前位置: 首页 > 知识库问答 >
问题:

为什么此脚本发送损坏的PDF?

戎永福
2023-03-14

我重写了我的代码,以匹配类似问题的其他答案,但它没有修复我的脚本的问题。它发送带有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");

以下是电子表格的url:https://docs.google.com/spreadsheets/d/1wmnw9Nl6B0e8IgVDgTEtGLzWhh1ssSgCLiOMsgs6Z64/edit#gid=1633156004

以下是我将工作表导出为pdf时的url:file:///C:/Users/gwaldo/Downloads/Master进度表-审查到期。pdf

当我将blob变量更改为包含getAs()时,这里是它导出的pdf:未损坏的pdf,但没有数据

记录器。日志(url\u基本url\u外部)=https://docs.google.com/spreadsheets/d/1wmnw9Nl6B0e8IgVDgTEtGLzWhh1ssSgCLiOMsgs6Z64/export?Format=pdf

%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">

共有1个答案

丁念
2023-03-14

400状态代码根据RFC2616

10.4.1 400错误请求

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

其中一个查询参数的语法似乎不被理解或格式不正确。只需添加var url\u ext='format=pdf'就可以帮助隔离问题。通过OP测试每个参数后,似乎是fzr=false导致了问题,因为它缺少

 类似资料:
  • 问题内容: 我写了一个简单的套接字程序,它工作正常,但是我的朋友使用端口扫描工具,当它扫描到我正在使用的端口时,它会收到“ java.net.SocketException:Broken pipe”错误,发生了什么?以及如何解决? 控制台的详细信息错误: 问题答案: 某些端口扫描程序通过开始打开连接然后立即终止连接来工作。您的服务器未编程为处理连接失败,因为您没有为此编写代码。您将需要使用try

  • 问题内容: 突然之间,我的应用程序出现了前所未有的问题。我决定检查Apache的错误日志,并发现一条错误消息,指出“ zend_mm_heap已损坏”。这是什么意思。 操作系统:Fedora Core 8 Apache:2.2.9 PHP:5.2.6 问题答案: 经过多次试验和错误,我发现如果我增加php.ini文件中的值,此错误就消失了

  • 我注意到一个问题,当从shell脚本循环运行多个adb命令时,大多数命令都不会执行。 这是一个示例脚本。 脚本名称:: 注释掉adb命令的输出 我连接了5台设备。在不使用theadab命令的情况下从bash文件运行时,这是输出。它遍历5个循环中的每一个。 包含ADB命令的循环输出 当取消注释adb shell命令时,它只会正确地迭代第一个循环的行。这是未注释adb命令时的输出: 有人能解释一下这种

  • 几天前,我在Cassandra 1.2中删除了一列,方法是:1.删除整个表,2.重新创建表,不带列,3.插入插入语句(不带列)。 我之所以那样做,是因为Cassandra 1.2不支持“降列”操作。 今天,由于数据损坏问题,Ops团队通知了我。我的问题: > 根本原因是什么? 怎么修? 错误[read stage:79]2014-11-04 11:29:55,021 CassandraDaemon

  • 问题内容: 我在JSP页面中有这样的链接,其编码为big5 http:// hello / world?name =婀ㄉ ,当我在浏览器的URL栏中输入该链接时,它将被更改为类似 http:// hello / world?name = %23%24%23 而且,当我们想在jsp页面中获取此参数时,所有字符都已损坏。 并且我们已设置为:request.setCharacterEncoding(“

  • 问题内容: 我有以下代码将页面附件带给用户: 问题是所有受支持的文件都可以正常工作(jpg,gif,png,pdf,doc等),但是.docx文件在下载时已损坏,需要通过Office进行修复才能打开。 起初我不知道问题是否出在解压缩包含.docx的zip文件,所以我没有保存输出文件,而是先保存了文件,然后成功打开了文件,所以我知道问题所在应该在回应写作中。 你知道会发生什么吗? 问题答案: 我也遇