2013-05-09 196 views
0

我有一个简单的文档/模板,我想在向用户发送电子邮件时使用。它适用于文本版本,但我无法弄清楚,如何以HTML格式发送文档。该文件只包含带有粗体格式的文字。Google Apps脚本MailApp使用htmlBody文档

function sendEmail(emailAddress, attachment){ 
    var EMAIL_TEMPLATE_ID = "SOME_GOOGLE_DOC_ID"; 
    var emailTemplate = DocumentApp.openById(EMAIL_TEMPLATE_ID); 
    MailApp.sendEmail(emailAddress, "Subject", emailTemplate.getText(), { 
     htmlBody: emailTemplate, <-- THIS does not return correct data }); 
} 

回答

0

htmlBody参数期望的字符串而emailTemplate变量的类型为文档。

你应该使用类似

MailApp.sendEmail(emailAddress, "Subject", emailTemplate.getText(), { 
     htmlBody: emailTemplate.getBody().getText() }); 
+0

在htmlBody的格式化是完全丧失(它被接收为简单的字符串)。 这就是模板的外观(简单文本用斜体,粗体和进入):https://docs.google.com/document/d/1IkJhOVCTs66F_4LJwMtmx0EM_QkNkunYYiHqT1MCwTw/edit?usp=sharing – user2365226 2013-05-09 08:43:23

+0

您应该用HTML编写文档。 – Srik 2013-05-10 02:11:02

0

这是相当直接的,如果我们利用罗马Vialard的DriveApp库。您需要按照说明here将库添加到您的项目中,然后您可以使用下面的代码。

/** 
* get a String containing the contents of the given document as HTML. 
* Uses DriveApp library, key Mi-n8njGmTTPutNPEIaArGOVJ5jnXUK_T. 
* 
* @param {String} docID ID of a Google Document 
* 
* @returns {String} Content of document, rendered in HTML. 
* 
* @see https://sites.google.com/site/scriptsexamples/new-connectors-to-google-services/driveservice 
*/ 
function getDocAsHTML(docID) { 
    var doc = DriveApp.getFileById(docID); 
    var html = doc.file.content.src; 
    var response = UrlFetchApp.fetch(html); 
    var template = response.getContentText(); 

    return template; 
} 

function sendEmail(emailAddress, attachment){ 
    var EMAIL_TEMPLATE_ID = 'SOME_GOOGLE_DOC_ID'; 
    var emailTemplate = getDocAsHTML(EMAIL_TEMPLATE_ID); 
    MailApp.sendEmail(emailAddress, "Subject", emailTemplate.getText(), { 
     htmlBody: emailTemplate }); 
} 
2

我发现答案是这样的一个

function getDocAsHtml(docId){ 
    var url = 'https://docs.google.com/feeds/download/documents/Export?exportFormat=html&format=html&id='; 
    return UrlFetchApp.fetch(url+docId).getContentText(); 
} 

工作得很好

相关问题