Google apps script Gmail加载项错误:SubmitFormResponseMarkup具有不允许的值:card\u导航

Google apps script Gmail加载项错误:SubmitFormResponseMarkup具有不允许的值:card\u导航,google-apps-script,google-apps,gmail-addons,google-apps-script-addon,Google Apps Script,Google Apps,Gmail Addons,Google Apps Script Addon,我有功能logoutAction(e),当使用setOnClickAction()并在Card中的text按钮上设置此功能时,它工作正常 但是,当我使用来自universalActions的相同函数时,我得到以下错误: SubmitFormResponseMarkup具有不允许的值:card\u导航 这里很好: var logoutButton = CardService.newTextButton() .setText("Logout") .setOnCl

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

但是,当我使用来自
universalActions
的相同函数时,我得到以下错误:

SubmitFormResponseMarkup具有不允许的值:card\u导航

这里很好:

   var logoutButton = CardService.newTextButton()
        .setText("Logout")
        .setOnClickAction(CardService.newAction().setFunctionName("logoutAction"));
    content.addWidget(logoutButton);
但是从清单中的
universalaactions
,它不起作用:

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

有什么想法吗?

我们不能将同一功能用于简单操作和通用操作。因为简单操作必须返回
ActionResponse
,但通用操作必须返回
universalaactionresponse


因此,我们需要使用
CardService.newActionResponseBuilder()
而不是
CardService.newUniversalActionResponseBuilder()

我们不能对简单操作和通用操作使用相同的函数。因为简单操作必须返回
ActionResponse
,但通用操作必须返回
universalaactionresponse


因此,我们需要使用
CardService.newActionResponseBuilder()
而不是@Roman建议的
CardService.newUniversalActionResponseBuilder()

来执行通用操作的导航操作。您的代码应更改为

function logoutAction(e) {
    revokeToken();

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

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

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

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

正如@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)返回的内容,您可能需要也可能不需要它的相关build()函数。

欢迎使用Stack Overflow,我试图重现您的错误,但我注意到您的函数
logoutAction(e)
首先调用了两个您没有提供的其他函数,它们是
revokeToken()
getOAuthService()。你能把它们放在你的问题里吗?这将使故障排除更加容易。@albertovielma非常感谢您的回复。我刚刚找到了解决办法:我们不能将同一个函数用于简单操作和通用操作。因为简单操作必须返回
ActionResponse
,但通用操作必须返回
universalaactionresponse
Ok!我很高兴听到你能找到它。欢迎来到Stack Overflow,我试图重现你的错误,但是我注意到你的函数
logoutAction(e)
首先调用了另外两个你没有提供的函数,它们是
revokeToken()
getOAuthService()。你能把它们放在你的问题里吗?这将使故障排除更加容易。@albertovielma非常感谢您的回复。我刚刚找到了解决办法:我们不能将同一个函数用于简单操作和通用操作。因为简单操作必须返回
ActionResponse
,但通用操作必须返回
universalaactionresponse
Ok!我很高兴听到你能找到它。