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

时间:2016-01-27 18:05:54

标签: google-apps-script

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

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

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

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

//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

我注意到我可以使用用户界面右键单击云端硬盘中的HTML文件,然后使用文档打开。它将创建一个新的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云端硬盘中保存时,我们唯一的选择就是在此处插入该信息。

是否有人知道如何使用应用脚本将HTML呈现给Google文档?

1 个答案:

答案 0 :(得分:5)

我有一个解决方案。 这行代码会将任何文件转换为适当的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;

要实现此功能,首先必须按照here

中所述打开高级Drive API

整个高级驱动器API已解释为here,但该文档适用于API的REST版本,因此您必须使用this网站上的说明以某种方式弄清楚如何将其转换为应用脚本在“如何确定方法签名”和示例here下。应用程序脚本编辑器中的自动完成功能也有助于此。