Google apps script Google应用程序脚本MailApp用于htmlBody的使用文档

Google apps script Google应用程序脚本MailApp用于htmlBody的使用文档,google-apps-script,Google Apps Script,我有一个简单的文档/模板,我想在向用户发送电子邮件时使用。它在文本版本下运行良好,但我不知道如何以HTML格式发送文档。文档仅包含一些粗体格式的文本 function sendEmail(emailAddress, attachment){ var EMAIL_TEMPLATE_ID = "SOME_GOOGLE_DOC_ID"; var emailTemplate = DocumentApp.openById(EMAIL_TEMPLATE_ID); MailApp.se

我有一个简单的文档/模板,我想在向用户发送电子邮件时使用。它在文本版本下运行良好,但我不知道如何以HTML格式发送文档。文档仅包含一些粗体格式的文本

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  });
}
功能发送电子邮件(电子邮件地址、附件){
var EMAIL\u TEMPLATE\u ID=“SOME\u GOOGLE\u DOC\u ID”;
var emailTemplate=DocumentApp.openById(EMAIL\u TEMPLATE\u ID);
MailApp.sendEmail(电子邮件地址,“主题”,emailTemplate.getText(),{

htmlBody:emailTemplate,当
emailTemplate
变量的类型为Document时,
htmlBody
参数需要一个字符串

你应该使用类似于

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

htmlBody
参数需要一个字符串,而
emailTemplate
变量的类型为Document

你应该使用类似于

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

如果我们利用Roman Vialard的DriveApp库,这是非常简单的。您需要按照说明将库添加到您的项目中,然后您可以使用下面的代码

/**
 * 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 });
}

如果我们利用Roman Vialard的DriveApp库,这是非常简单的。您需要按照说明将库添加到您的项目中,然后您可以使用下面的代码

/**
 * 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 });
}

我找到的答案是这个

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

效果很好

我找到的答案是这个

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

很好地工作

htmlBody中的格式设置完全丢失(以简单字符串的形式接收)。这就是模板的外观(带斜体、粗体和回车的简单文本):htmlBody中的格式设置完全丢失(以简单字符串的形式接收)。这就是模板的外观(带斜体、粗体和回车的简单文本):如果你拿到了401,看看你拿到了401,看看