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

返回错误400请求失败的应用程序脚本

漆雕唯
2023-03-14

我有这个代码,我用它从电子表格创建PDF,我修改了它,在另一个电子表格中使用,现在我得到这个错误。

异常:https://docs.google.com 返回代码 400 的请求失败。截断的服务器响应:

完整的错误似乎是:

.goog-inline-block{position:relative;display:-moz-inline-box;display:inline-block}* html .goog-inline-block{display:inline}*:first-child html .goog-inline-block{display:inline}#drive-logo{margin:18px 0;position:absolute;white-space:nowrap}.docs-drivelogo-img{background-image:url('//ssl.gstatic.com/images/branding/googlelogo/1x/googlelogo_color_116x41dp.png');background-size:116px 41px;display:inline-block;height:41px;vertical-align:bottom;width:116px}.docs-drivelogo-text{color:#000;display:inline-block;opacity:0.54;text-decoration:none;font-family:'Product Sans',Arial,Helvetica,sans-serif;font-size:32px;text-rendering:optimizeJanibility;position:relative ;top:-6px;left:-7px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media (-webkit-min-device-pixel-ratio:1.5),(min-resolution:144dpi){.docs-drivelogo-img{background-image:url('//ssl.gstatic.com/images/branding/googlelogo/2x/googlelogo_color_116x41dp.png')}}body {background-color: #fff; font-family: Arial,sans-serif; font-size: 13px; margin: 0; padding: 0;}a, a:link, a:visited {color: #112ABB;}.错误消息 {字体大小: 12pt; 字体粗细: 粗体; 行高: 150%;}抱歉,目前无法打开文件。

请检查地址,然后重试。

使用Google Drive完成工作

Google Drive中的应用程序可以轻松创建、存储和共享在线文档、电子表格、演示文稿等。

在drive.google.com/start/apps.了解更多

我有办法解决这个错误吗?剧本是这样的:

  var ss2 = SpreadsheetApp.openByUrl('https://docs.google.com/spreadsheets/d/1cEFEmTuVisjOvOpN1JieOOIvJloYcgFHQmD5a07lnCo/edit#gid=1149589669');   
  var sheetName = ss2.getSheetByName('Exportación_pdf');
  var sheetName2 = ss2.getSheetByName('Selección pedido');
  var folderID = "14QBHZ5268OI9cqurbcIuvDfa3GG6HUVa"; // Folder id to save in a folder.
  var num_rows = sheetName.getRange("AR1").getValue();
  var folder = DriveApp.getFolderById(folderID); 
  var pdfName = ss2.getSheetByName('Exportación_pdf').getRange('F1:F3').getValue() + "_" + ss2.getSheetByName('Exportación_pdf').getRange('AK5').getValue() + "_" + ss2.getSheetByName('Selección pedido').getRange('Q4').getValue(); // Nombre del documento
  var bogus = DriveApp.getRootFolder();
SpreadsheetApp.getActiveSpreadsheet().toast('Creando PDF');

  // export url
  var url = 'https://docs.google.com/spreadsheets/d/'+ss2.getId()+'/export?exportFormat=pdf&format=pdf' // export as pdf / csv / xls / xlsx
  + '&range=Exportacion_pdf!AJ1:AQ'+num_rows
  + '&size=A4'                           // paper size legal / letter / A4
  + '&portrait=false'                     // orientation, false for landscape
  + '&fitw=true'                        // fit to page width, false for actual size
  + '&sheetnames=false&printtitle=false' // hide optional headers and footers
  + '&pagenumbers=true&gridlines=false' // hide page numbers and gridlines
  + '&fzr=true'                         // do not repeat row headers (frozen rows) on each page
  + '&top_margin=0.5&bottom_margin=0.5&left_margin=0.5&right_margin=0.5'
  + '&gid='+ss2.getSheetId();    // the sheet's Id

  var token = ScriptApp.getOAuthToken();

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

  var theBlob = response.getBlob().setName(pdfName+'.pdf');

  // delete pdf if already exists
  var files = folder.getFilesByName(pdfName);
  while (files.hasNext())
  {
    files.next().setTrashed(true);
  }

  // create pdf
  var newFile = folder.createFile(theBlob);

  return true;

 }```

Thank you so much in advance!

共有1个答案

祁聪
2023-03-14

更改此:

var url = 'https://docs.google.com/spreadsheets/d/'+sheetName+'/export?exportFormat=pdf&format=pdf'

对此:

var url = 'https://docs.google.com/spreadsheets/d/'+ss2.getId()+'/export?exportFormat=pdf&format=pdf'

似乎您没有将Google Sheet<code>id</code>添加到URL。

 类似资料:
  • 问题内容: 这工作正常: 这将返回400 Bad Request(只是使用.ajax来支持错误处理的上述jQuery的重新格式)。 问题答案: 我认为您只需要再添加2个选项(和):

  • 我试图使用Gmail API将用户设置应用到Gmail帐户,但它不断返回错误400错误请求。 我可以看到错误代码在Gmail API控制台,它来自我的服务号,所以代码不可能是如此错误,但它让我发疯,只是不能找出什么是错误的。 如果有人能给我指出正确的方向,我会非常感激。

  • 当试图将图像上传到我的服务时,我在Jersey和中有一个非常奇怪的行为。我的服务在DropWizard上运行。 接受图像(以及元数据对象)的方法如下所示: 如果我尝试使用绝对路径上传一个文件,这实际上是有效的!但是,它不工作,我试图上传一个文件使用相对路径。 更重要的是,当服务部署在另一台机器上(上传映像请求来自不同的机器)时,它也不起作用。这很重要,因为我将服务部署到Heroku,我需要从其他地

  • 问题内容: 我有这个应用程序,它可以在本地运行,并且在部署时可以使用.mdf SQL Express数据库文件(通常用于测试目的)。但是,当我将其更改为可与我们的SQL Server 2008一起使用时,该应用程序可以运行,但该服务无法运行。 例如,如果在页面后面的代码中,我有一个按钮可以向表中添加数据,例如: 我的web.config设置为在该服务器上使用模拟,并且一切运行良好。但是,对于我的服

  • 在我的API控制器类中有方法如下, 如下所示, 我从postman调用了API,并返回了它的请求。 我在Controller方法中放置了断点,但它没有命中。在我从方法参数breakpoin hit中删除了之后,没有返回。当我使用时,为什么它返回400?我如何从HTTP客户端调用这个控制器方法?。 我试过这个,它也会返回400个请求 我该怎么解决这个问题?请帮帮我。我删除了前面的问题,这才是我真正的

  • 我试图对我写的rest api执行一个put请求,但它总是返回400-bug请求。 java.io.IO异常:服务器返回HTTP响应代码:400为URL:http://localhost:8000/api/v0/contacts/2sun.net.www.protocol.http.HttpURLConnection.getInputStream(未知来源) 我可以用firefox rest客户端