Мы создаем Gmail Add-On , однако мы хотим показать другую карту в зависимости от бизнес-логики при вызове дополнения onTriggerFunction
.Это работает нормально в первый раз, когда функция запускается при открытии электронной почты.
У нас есть условная логика, но Gmail, похоже, кэширует результат первоначального вызова, возвращающего первую карточку.При переходе к другому электронному письму и возвращению к исходному тексту onTriggerFunction
больше не вызывается, поэтому условная логика не запускается для изменения отображаемой исходной карты.
Есть ли способ заставить функцию onTrigger запускаться каждый раз, когдаэлектронная почта открывается, а не только один раз, когда электронная почта открывается в первый раз?
Вот пример дополнения с триггерной функцией, которая возвращает одну карту, отображающую текущее время:
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"
}
}
При переходе к старым разговорам отображается счетчик, за которым следует текущее время,Однако при переходе к ранее отображаемым разговорам старое значение времени отображается мгновенно, что указывает на некоторое кэширование:
Действия внутри надстройки или другиеактивность в нашем приложении может повлиять на то, что должно отображаться при повторном открытии ранее отображенного разговора.Это означает, что повторное отображение старой копии карты приводит к неожиданному поведению пользователя.