使用Google Apps Script在Google Drive中将网页下载为PDF

3
我正在开发一个谷歌应用脚本,旨在将网页保存为PDF文件并存储到我的Google Drive文件夹中。以下是当前的代码:
function downloadFiles(){
   var fileName ="";
   var fileSize ="";
   var response=UrlFetchApp.fetch("https://fr.wikipedia.org/wiki/Wikip%C3%A9dia:Accueil_principal");

   var rc=response.getResponseCode()
   if(rc==200){
     var fileBlob=response.getAs('application/pdf');
     var folder= DriveApp.getFolderById("ID")// folder where the files to compare will be stored
     if (folder!=null){
       var file=folder.createFile(fileBlob)
       fileName= file.getName()
       fileSize= file.getSize()
     }
   }
   var fileInfo={'rc':rc, "filename":fileName,"filesize":fileSize}
 } 

由于某些原因,当我运行脚本时出现以下错误:

异常:从文本/ HTML转换为应用程序/ PDF失败。

我在一些网站上读到,这可能与限制或类似的东西有关... 你知道我该如何解决这个问题吗?


有一个错误导致PDF blob无法从HTML正确转换。Google有一个用于跟踪错误的问题跟踪器。通过访问问题跟踪器并点击星号,您可以让Google知道这是需要修复的问题。请点击以下链接中的“Star”以解决此问题:https://issuetracker.google.com/issues/196100674 - Alan Wells
2个回答

2

据我所知,问题可能来自getAs()无法完成转换。

我尝试了以下版本:

var page = response.getContentText();
var fileBlob = Utilities.newBlob(page,"application/pdf");
fileBlob.setName("name");

它成功地创建了一个PDF,但是除了第一页之外,内容都损坏了。我会继续寻找解决方案。


谢谢您的回答!尝试了您的解决方案后,我得到了这个结果:异常:参数(UrlFetchApp.HTTPResponse,String)与Utilities.newBlob的方法签名不匹配。 我不确定这意味着什么,也不确定我们是否朝着正确的方向前进 :( - sharani97
哦,我的错,我对“response”类型感到困惑。我编辑了我的答案,但是很遗憾我还没有找到一个可行的解决方案。 - Rilves
有一个错误导致PDF blob无法从HTML正确转换。Google有一个用于跟踪错误的问题跟踪器。通过访问问题跟踪器并点击星号,您可以让Google知道这是需要修复的问题。请点击以下链接中的“Star”以解决此问题:https://issuetracker.google.com/issues/196100674 - Alan Wells

2
那个转换服务在过去的24小时内似乎出现了问题(自从那时起,我一直在尝试修复我的脚本)。这个脚本已经运行了2年,但是自昨天以来就失败了。
有人提出了这个stackoverflow问题: Google App Script将HTML转换为PDF不起作用,但被错误地标记为重复。
我猜测:Google App这边出了些问题,但我会关注这个问题,以防万一。

感谢您提供这些信息。我会尽快更新这个问题,一旦有什么变化发生:) - sharani97

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接