Tom*_*ell 11 gmail google-apps-script gmail-addons
我们正在构建Gmail附加组件,但是我们希望在onTriggerFunction调用附加组件时根据某些业务逻辑显示不同的卡.这在电子邮件打开时第一次运行该功能时工作正常.
我们有条件逻辑,但Gmail似乎缓存了返回第一张卡的初始调用的结果.转到另一封电子邮件并返回原始电子邮件,onTriggerFunction不会再次调用,因此不运行条件逻辑来更改呈现的初始卡.
无论如何,每次打开电子邮件时都要运行onTriggerFunction,而不是只在第一次打开电子邮件时运行?
这是一个带有触发器功能的附加组件,它返回一张显示当前时间的卡片:
Code.js
function buildAddOn(e) {
  var card = CardService.newCardBuilder();
  card.setHeader(CardService.newCardHeader().setTitle(new Date().toLocaleTimeString()));  
  return [card.build()];
}
appsscript.json
{
  "timeZone": "GMT",
  "dependencies": {
  },
  "oauthScopes": ["https://www.googleapis.com/auth/gmail.addons.execute"],
  "gmail": {
    "name": "Minimal example",
    "logoUrl": "https://www.gstatic.com/images/icons/material/system/2x/bookmark_black_24dp.png",
    "contextualTriggers": [{
      "unconditional": {
      },
      "onTriggerFunction": "buildAddOn"
    }],
    "primaryColor": "#4285F4",
    "secondaryColor": "#4285F4",
    "openLinkUrlPrefixes": ["https://mail.google.com/"],
    "version": "TRUSTED_TESTER_V2"
  }
}
导航到较旧的对话时,将显示微调器,然后显示当前时间.但是,当导航回以前显示的对话时,会立即显示旧的时间值,表明正在进行一些缓存:

加载项中的操作或我们应用中的其他活动可能会影响重新打开以前显示的对话时应显示的内容.这意味着重新显示卡的旧副本会导致用户意外行为.
不幸的是,目前(2019 年 7 月)无法强制触发器在每次打开电子邮件时运行。您可以将其用作ActionResponseBuilder.setStateChanged(true)对按钮单击的响应,以指示 Gmail 清除缓存,但它不能与正常的卡片响应一起发送。