获取Google文档HTML内容,然后使用GmailApp发送

时间:2014-01-20 22:07:48

标签: html css google-apps-script gmail google-docs

我需要通过Gmail将HTML文档内容作为HTML发送,以完全按照文档中的内容显示消息中的内容(请参阅下面的示例代码)

电子邮件收件人收到的HTML内容不准确,至少可以说

  • 如果使用Gmail阅读邮件,则缺少所有格式(图片包装,字体粗体和颜色)
  • 如果使用Mozilla Thunderbird或Microsoft Outlook,则仅缺少图像包装,但有一些额外的上边距

有没有办法做到这一点,或者至少更好?

这里是我正在使用的代码

function doc2mailtest() {
  var docId = "1glvAaYuYm25oZZVmHLaEySlPP-9fIqGwm17wAs1HpHc";
  // link to document: https://docs.google.com/a/thexs.ca/document/d/1glvAaYuYm25oZZVmHLaEySlPP-9fIqGwm17wAs1HpHc/edit
  var html = getDocAsHtml(docId); // OK but not accurate - ignore text format and image wrapping
  GmailApp.sendEmail("me@some.com", "Just testing MMD", '', { htmlBody: html });
  return;
}
function getDocAsHtml(docId) {
  var scope = 'https://docs.google.com/feeds/';
  var url = scope+'download/documents/Export?exportFormat=html&format=html&id=';
  var auth = googleOAuth_('docs',scope);
  return UrlFetchApp.fetch(url+docId,auth).getContentText();
}
function googleOAuth_(name,scope) {
  var oAuthConfig = UrlFetchApp.addOAuthService(name);
  oAuthConfig.setRequestTokenUrl("https://www.google.com/accounts/OAuthGetRequestToken?scope="+scope);
  oAuthConfig.setAuthorizationUrl("https://www.google.com/accounts/OAuthAuthorizeToken");
  oAuthConfig.setAccessTokenUrl("https://www.google.com/accounts/OAuthGetAccessToken");
  oAuthConfig.setConsumerKey('anonymous');
  oAuthConfig.setConsumerSecret('anonymous');
  return {oAuthServiceName:name, oAuthUseToken:"always"};
}

感谢和问候,Fausto

1 个答案:

答案 0 :(得分:3)

Google文档有一个附加组件可以发送文档的HTML电子邮件版本 - 打开“附加组件>获取附加组件”并搜索“email html”。

对于编码人员的方法,Omar AL Zabir(用户 @oazabir)写了一篇很好的博客文章:Google Docs to Clean HTML。您可以遍历文档对象以收集每个元素并构建HTML输出,而不是依赖于将文档作为HTML获取。

确保电子邮件看起来像所有电子邮件客户端中的源文档一样是一个很大的主题 - 对于这个论坛来说太多了。但是,请注意以下几点: