如何通过回调更改 Gmail 插件的 UI?

How do I alter the UI of a Gmail Add On from a callback?

gmail 附加组件的新手,有一个我确信很基本的问题:如何通过回调函数更改我的附加组件的 UI?

更具体地说,我有一个按钮呈现在我的卡片的一个部分中:

section.addWidget(
       CardService.newTextButton()
       .setText('UNSUBSCRIBE')
       .setOnClickAction(
         CardService.newAction()
         .setFunctionName('unsubscribe')
         .setParameters({email: sender.email})));

如您所见,我在单击该函数时调用了一个名为 "unsubscribe" 的函数,该函数又调用了第 3 方 API 端点。从该端点收到 200 响应后,我想隐藏 "unsubscribe" 按钮并向用户显示一条消息,说明取消订阅请求已成功通过。目前,我不知道如何访问卡片部分,所以我改为显示通知:

function unsubscribe(e){

  var parameters = e.parameters;
  var email = parameters['email'];

  var data = {
    "code":"XXXX",
    "email": email
  };

  var options = {
    'method' : 'post',
    'contentType': 'application/json',
    'payload' : JSON.stringify(data)
  };

  var response = UrlFetchApp.fetch('https://someurl.com', options);

  if(response.getResponseCode() == 200){

    return CardService.newActionResponseBuilder()
       .setNotification(CardService.newNotification().setType(CardService.NotificationType.INFO)
           .setText(email + " has been unsubscribed from future notices."))
       .build();    
  }

  return CardService.newActionResponseBuilder()
       .setNotification(CardService.newNotification()
           .setType(CardService.NotificationType.WARNING)
           .setText("Something went wrong"))
       .build();

}

最好在成功时隐藏取消订阅按钮并在线显示成功消息。我该怎么做?

提前致谢。

截至目前,我们无法动态更新卡片的部分。因此,您不能直接隐藏按钮并显示一些消息。但作为一种解决方法,您可以使用 Navigation class 和 updateCard 方法重绘整个卡片(不包括按钮但包括消息)。

如果您还没有使用过导航 class,this link 可能会有用。