如何通过回调更改Gmail Add On的用户界面?

时间:2018-04-09 23:38:53

标签: gmail-addons

gmail添加了新功能并且有一个我确定非常基本的问题:如何从回调函数更改我的添加的UI?

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

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

正如你所看到的,我称之为"取消订阅"单击它时,它又调用第三方API端点。根据该端点的200响应,我想隐藏"取消订阅"按钮并向用户显示一条消息,指出取消订阅请求已成功完成。目前,我不知道如何访问卡片部分,所以我正在显示通知:

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();

}

将成功隐藏UNSUBSCRIBE按钮并在线显示成功消息会好得多。我该怎么做?

提前致谢。

1 个答案:

答案 0 :(得分:2)

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

如果您尚未使用导航课程,this链接可能会有用。