Gmail Add-on Error: SubmitFormResponseMarkup has disallowed value:card_navigations

Gmail Add-on Error: SubmitFormResponseMarkup has disallowed value:card_navigations

我有功能 logoutAction(e),当使用 setOnClickAction() 并在 Card 中的 TextButton 上设置此功能时 - 它工作正常。

但是当我使用 universalActions 中的相同函数时 - 我收到此错误:

SubmitFormResponseMarkup has disallowed value:card_navigations

function logoutAction(e) {
    revokeToken();

    var service = getOAuthService();
    service.reset();

    userProperties.setProperty('loggedIn', 'false');

    // Create a Navigation object to push the card onto the stack.
    // Return a built ActionResponse that uses the navigation object.
    var nav = CardService.newNavigation().pushCard(loginFormBuild(e));
    return CardService.newActionResponseBuilder().setNavigation(nav).build();
}

这里工作正常:

   var logoutButton = CardService.newTextButton()
        .setText("Logout")
        .setOnClickAction(CardService.newAction().setFunctionName("logoutAction"));
    content.addWidget(logoutButton);

但是清单中的 universalActions - 它不起作用:

    "universalActions": [{
    "text": "Logout",
    "runFunction": "logoutAction"
  }]

有什么想法吗?

我们不能对简单动作和通用动作使用相同的函数。因为简单动作必须returnActionResponse,而通用动作必须returnUniversalActionResponse

所以我们需要使用 CardService.newUniversalActionResponseBuilder()

而不是 CardService.newActionResponseBuilder()

正如@Roman 所建议的,在执行通用操作的导航操作时,您应该使用 UniversalActionResponseBuilder()。您的代码应更改为

function logoutAction(e) {
    revokeToken();

    var service = getOAuthService();
    service.reset();

    userProperties.setProperty('loggedIn', 'false');

    return CardService.newUniversalActionResponseBuilder().displayAddOnCards([loginFormBuild(e).build()]).build();
}

根据您的函数 loginFormBuild(e) returns,您可能需要也可能不需要它的相关 build() 函数。