javascript 从Google Doc导出HTML,粘贴到GMail时不保持格式

ycl3bljg  于 2023-02-18  发布在  Java
关注(0)|答案(1)|浏览(94)

tl;dr -将Google Doc导出为HTML文件并粘贴到GMail草稿中后,它不包含原始Google Doc的格式(超链接除外)。
代码片段:

//copies the doc to HTML format
var htmlExport = "https://docs.google.com/feeds/download/documents/export/Export?id=" + docID + "&exportFormat=html";
var param = {
  method: "get",
  headers: {"Authorization": "Bearer " + ScriptApp.getOAuthToken()},
  muteHttpExceptions: true,
};
var htmlExportText = UrlFetchApp.fetch(htmlExport,param).getContentText();

//the variables below (contactEmail & emailSubject) are both taken from a spreadsheet

//copies recent draft body to new email, then updates body of new email to include HTML export
var draftEmailBody = GmailApp.getMessageById(draftEmailID).getBody();
var draftToSend = GmailApp.createDraft(contactEmail,emailSubject,'',{htmlBody: htmlExportText + draftEmailBody}).getMessageId();

详细版本:
我正在创建一个邮件合并,它从GSheet中提取联系人信息,并使用GDoc作为正文的模板。GDoc中有一些格式(粗体、斜体、上标),当使用上面的脚本导出为HTML时,这些格式在GMail草稿中显示为没有格式(由于某种原因,它留下了超链接)。由于某种奇怪的原因,它甚至留下了文档中的图像!
然而,GMail草稿被拉入正文(draftEmailBody),保留了它的所有格式。我只能假设这意味着我使用getContentText做错了什么,但我不知道还能怎么做。
(This is completely separate and I should probably just make another question for this, but I'm here so...)
另外,我想让脚本编辑GDoc模板中的特定字段,但我遇到了2个问题。
问题1 -我发现没有办法替换GMail草稿中的特定文本。
变通方法1 -我让脚本使用repalceText编辑GDoc中的文本,但是这会导致:
问题2 -在GDoc中使用replaceText需要你在脚本能够识别更改之前保存并关闭。由于某种原因,我再也不能让我的脚本打开GDoc了,尽管在脚本的不同地方包含了openByID!
变通方法2 -我为每个联系人创建一个文档副本,替换文档中的文本,然后在完成时丢弃所有副本,这样就不会出现混乱。相当笨重和缓慢,但它完成了工作。

相关问题