0

gmail 插件的新手,并且有一个我确信非常基本的问题:如何从回调函数更改插件的 UI?

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

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

如您所见,我在单击时调用了一个名为“取消订阅”的函数,该函数又调用了第 3 方 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 按钮并在一行中显示成功消息。我该怎么做?

提前致谢。

4

1 回答 1

2

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

如果您还没有使用导航类,链接可能很有用。

于 2018-04-10T07:48:26.173 回答