如何使用GAS显示电子邮件内容

时间:2014-07-30 14:37:19

标签: google-apps-script

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

   var email  = GmailApp.getMessageById(id);

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

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

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

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

修改-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),我也不是很喜欢这个

修改-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(到网格或锚点)允许记录和其他事情 一件事(通常)不需要将改变背景图像。我试过(并且它有效),但事实证明,在打开邮件之前我甚至没有看到更改过的图像。

这种方法的缺点是你不断看到anchortext的下划线,只能点击锚点占用的区域

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

1 个答案:

答案 0 :(得分:0)

使用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服务)中呈现该消息并链接到该页面。