我需要通过Gmail将HTML文档内容作为HTML发送,以完全按照文档中的内容显示消息中的内容(请参阅下面的示例代码)
电子邮件收件人收到的HTML内容不准确,至少可以说
有没有办法做到这一点,或者至少更好?
这里是我正在使用的代码
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
答案 0 :(得分:3)
Google文档有一个附加组件可以发送文档的HTML电子邮件版本 - 打开“附加组件>获取附加组件”并搜索“email html”。
对于编码人员的方法,Omar AL Zabir(用户 @oazabir)写了一篇很好的博客文章:Google Docs to Clean HTML。您可以遍历文档对象以收集每个元素并构建HTML输出,而不是依赖于将文档作为HTML获取。
确保电子邮件看起来像所有电子邮件客户端中的源文档一样是一个很大的主题 - 对于这个论坛来说太多了。但是,请注意以下几点:
style
块。 (这就是为什么你在GMail中看不到格式化的原因。)见How do I use Google Apps Script to change a CSS page to one with inline styles?