【问题标题】:How to show an email message content using GAS如何使用 GAS 显示电子邮件内容
【发布时间】:2014-07-31 04:23:08
【问题描述】:

我获得了一封电子邮件的 id,并希望显示电子邮件内容 (html)。

   var email  = GmailApp.getMessageById(id);

如何显示电子邮件
a) 通过打开新的浏览器窗口(或选项卡式浏览器中的选项卡)
b) 通过打开 Gmail 和邮件
c) 通过在 Ui 小部件中显示它

关于 c) 我知道我可以使用

  var body    = email.getBody();
  app.createHTML().setHTML(body);

但这会删除很多元素(如图片和链接)

Edit-1
b) by opening Gmail and the message 的部分回答是使用弹性表中的锚点并单击它

     var mailUrl   = 'https://mail.google.com/mail/u/0/?tab=om#inbox/';
     var urlAnchor = mailUrl + message.getId();
     var btn       = app.createAnchor(row, urlAnchor)

但这需要用户点击
即使可以使用由锚点覆盖的按钮图像(请参阅How can I launch a website from a button)我不太喜欢这个

EDIT-1a
使用锚肯定是最快的。

   var urlImage = 'https://drive.google.com/uc?id=0BxjtiwHnjnkraTN3UmN6NDhrSDA'; // Empty button image

   var anchor   = app.createAnchor(txtAnchor, urlAnchor)
                     .addClickHandler(onClickHandler)
                     .setSize(width-2, height-2);

   var grid     = app.createGrid(1, 1).setWidget(0, 0, anchor)
                     .setSize(width, height).setStyleAttribute('textAlign', 'right')
                     .setStyleAttribute('backgroundImage', 'url(' + urlImage + ')');

添加一个 clickHandler(到网格或锚点)允许记录和其他事情。
(通常)不需要的一件事是更改背景图像。我尝试过(并且有效),但结果是在打开邮件之前我什至没有看到更改后的图像。

这种方法的缺点是你一直看到锚文本的下划线,并且只能点击锚所占据的区域

EDIT-2
我应该提到我正在使用UiApp.createApplication();,并且正在寻找一种在 UiApp 中显示电子邮件的可能性。

【问题讨论】:

  • 您可能对this post 感兴趣,它提供了一种将html 内容转换为保留所有格式的Google Doc 的方法。无论如何,知道总是很好;-)
  • 确实如此。缺少的重要事情之一是能够从谷歌文档(文档、脚本、电子表格、日历......)创建“标准”文件。尽管云存储将变得越来越流行,但人们希望(/需要)在本地拥有和存储数据并使用其他程序(和云)。从 google 电子表格到 xls、从 google docs 到 msword 等的转换非常重要,应该可以作为函数使用,例如 'var xlsFile = convert(GoogleSpreadSheetFile, nameExcelFile);'

标签: google-apps-script


【解决方案1】:

使用 UiApp HTML 小部件无法做到这一点。 HTML 小部件只允许有限数量的 html 标记 (release note march 7, 2012)

以下是允许的 HTML 标记列表:B、BLOCKQUOTE、BODY、BR、CENTER、CAPTION、CITE、CODE、DIV、EM、H1、H2、H3、H4、H5、H6、HR , I, LABEL, LEGEND, LI, OL, P, SPAN, STRONG, SUB, SUP, TABLE, TBODY, TD, THEAD, TITLE, TR, TT, UL

一种可能的解决方法是在另一个浏览器页面中呈现该消息(使用 html 服务)并链接到该页面。

【讨论】:

  • 我如何使用 html 服务来做到这一点?
  • 使用从消息中获取的 html 字符串并使用 developers.google.com/apps-script/reference/html/… 呈现它
  • 'function doGet() { return HtmlService.createHtmlOutput().setContent('Hello, world!'); }' 确实有效,但不是来自 UiApp(我更改了问题以表明我正在使用 UiApp)
  • 是的,我知道,我建议在另一个浏览器选项卡中这样做。正如我在回答中所说,在 UiApp 中这实际上是不可能的。使用锚的解决方案将是最简单的,除非您承认松散格式并仅显示文本内容,但我会理解您不想这样做。
  • 我之前已经搜索过答案,但希望我遗漏了一些东西。你的评论结束了我的搜索(现在:我确定在某个时候我会再试一次......)因为我想不出一个解决方案。谢谢(再次)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-01-11
  • 1970-01-01
  • 1970-01-01
  • 2012-07-22
  • 2015-08-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多