首页 文章

使用应用脚本将HTML呈现给Google文档?

提问于
浏览
4

我们使用Google Cloud 端硬盘,文档等工作

问题背景:我们的一个部门需要打印数百封电子邮件,包含页面信息 . 我们目前有一个谷歌网络应用程序,它采用gmail线程的内容,将消息保存为HTML blob,然后将这些文件作为PDF导出到文件夹 . 然后,我们的用户将这些PDF下载到硬盘驱动器,并进行批量打印 .

问题本身:我们的用户在打印时需要有关于这些PDF的页面信息 . 为此,我们首先让应用将电子邮件另存为Google文档,添加包含相关信息的页脚,然后再转换为PDF . 然而,我们正在尝试的是不起作用,现在我们只是在墙上扔东西看看会坚持什么 .

这是我们目前正在使用的(allMessages是一个包含电子邮件线程的HTML内容的String):

//save the HTML content to a PDF file.
var htmlBodyFile = myFolder.createFile("fileName.html", allMessages, "text/html");
var pdfBlob = htmlBodyFile.getAs("application/pdf");

我们试过这个(并且失败了):

//save the HTML content to a Google Doc. getAs() needs the MimeType.

var htmlBodyFile = myFolder.createFile("fileName.html", allMessages, "text/html");
var myDoc = htmlBodyFile.getAs("GOOGLE_DOCS");
// application/GOOGLE_DOCS, and application/vnd.google-apps.document don't work either

我注意到我可以使用UI右键单击Drive中的HTML文件并使用Docs打开 . 它将创建一个新的Google Doc并正确呈现HTML . 当我试图编写脚本(并失败)时,

var htmlBodyFile = myFolder.createFile("filename.html", allMessages, "text/html");
var myDoc = DocumentApp.openById(htmlBodyFile.getId());

它给我“文件丢失(也许它已被删除?)”

以下将创建一个doc,但实际上并不呈现HTML .

var myDoc = DocumentApp.create("docname");   
var myBody = myDoc.getBody();
myBody.setText(allMessages);
myDoc.saveAndClose();

现在我的想法很糟糕 .

我们尝试了解涉及Adobe的其他解决方案 . 不幸的是,Acrobat很昂贵并且以随机顺序打印文档(并且不允许命令行打印,所以我们可以编写脚本) . 而Reader无法添加我们需要的页面信息 . 因此,在Google Cloud 端硬盘中保存时,我们唯一的选择就是在此处插入该信息 .

有谁知道如何使用应用程序脚本将HTML呈现给Google文档?

1 回答

  • 4

    我有一个解决方案 . 这行代码会将任何文件转换为适当的google文档 . 例如如果它是一个csv文件,它将变成一个电子表格,如果它是HTML,它将转换为谷歌文件 .

    var newFileId = Drive.Files.copy({title: newFileName}, oldFileId, {convert: true}).id;
    

    或者,您可以将包含html的blob直接转换为文档 .

    var newFileId = Drive.Files.insert({title: newFileName}, blob, {convert: true}).id;
    

    为此,首先必须打开高级Drive API,如here所述

    整个高级驱动器API的解释是here,但该文档适用于API的REST版本,因此您必须使用"How method signatures are determined"网站"How method signatures are determined"和示例here上的说明,以某种方式弄清楚如何将其转换为应用程序脚本 . 应用程序脚本编辑器中的自动完成功能也有助于此 .

相关问题