问题
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.
回答1:
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 use popToRoot().updateCard(...)
and it works.
回答2:
As far as gmail addons are considered, cards are not refreshed but updated with new cards. And it is pretty simple.
//lets assume you need a form to be updated
function updateProfile() {
//ajax calls
//...
//recreate the card again.
var card = CardService.newCardBuilder();
//fill it with widgets
//....
//replace the current outdated card with the newly created card.
return CardService.newNavigation().updateCard(card.build());
}
来源:https://stackoverflow.com/questions/49781933/how-can-i-relaunch-update-refresh-the-card-again-using-apps-script