I'm having a nightmare doing a lot of scenarios using Apps Script, but nothing works! I have a function that makes a GET
request returns an array of cards. Now, sometimes I need this card refreshes again to fetch the new content.
function listTemplatesCards(){
var getAllTemplates = getTemplates();
var allTemplates = getAllTemplates.templates;
var theUserSlug = getAllTemplates.user_slug;
var templateCards = [];
//There are templates
if(allTemplates.length > 0){
allTemplates.forEach(function(template){
templateCards.push(templateCard(template, theUserSlug).build());
});
return templateCards;
}
}
This function is called on onTriggerFunction
. Now, if I moved to another card and I wanted to back again to the root but in clean and clear way, I use this but it doesn't work:
//Move the user to the root card again
var refreshNav = CardService.newNavigation().popToRoot();
return CardService.newActionResponseBuilder().setStateChanged(true).setNavigation(refreshNav).build();
Simply, what I want is once the user clicks on Refresh
button, the card refreshes/updates itself to make the call again and get the new data.
As far as gmail addons are considered, cards are not refreshed but updated with new cards. And it is pretty simple.
The only way I've found to do this is to always use a single card for the root. In the main function (named in the
appscript.json
onTriggerFunction
), return only a single card, not an array of cards. You can then usepopToRoot().updateCard(...)
and it works.