Динамически добавлять виджет по клику пользователя в дополнении Gmail с помощью CardService Appscript (GAS) - PullRequest
0 голосов
/ 26 декабря 2018

Я работаю над созданием надстройки Gmail для одного из моих проектов.Я застрял на одном сценарии.Я хочу показать пользователю выпадающий список, и когда пользователь выбирает любое значение из этого выпадающего списка, я хочу динамически добавить новую метку / текстовое поле под выпадающим списком, который покажет вам выбранное значение.Я использую метод newSelectionInput CardService для создания раскрывающегося списка.Вот код для этого:

var dueDateDropDown = CardService.newSelectionInput()
.setType(CardService.SelectionInputType.DROPDOWN)
.setTitle("Due Date")
.setFieldName("due_date")
.addItem("No due date", "one_value", true)
.addItem("Today", "two_value", false)
.addItem("Tomorrow", "three_value", false)
.addItem("This Friday", "four_value", false)
.addItem("Next Monday", "five_value", false)
.setOnChangeAction(CardService.newAction().setFunctionName('addLabel'))

Так может кто-нибудь помочь мне написать функцию addLabel, которая добавит виджет метки.Это функция, которую я пытаюсь написать:

 function addLabel(e){
  var selected = e.formInputs.due_date;

  // Activate temporary Gmail add-on scopes.
  var accessToken = e.messageMetadata.accessToken;
  GmailApp.setCurrentMessageAccessToken(accessToken);

  var messageId = e.messageMetadata.messageId;
  var message = GmailApp.getMessageById(messageId);
  var thread = message.getThread();

  Logger.log(message.getSubject());
  Logger.log(selected);
  // What should be the code for adding a label or textbox to the widget here.
}

Заранее спасибо.

1 Ответ

0 голосов
/ 30 декабря 2018

Вы можете сделать это, перестроив пользовательский интерфейс.

function buildAddOn(e){
  return buildUi(e);  
}


function buildUi(e,labelData){

  var dueDateDropDown = CardService.newSelectionInput()
  .setType(CardService.SelectionInputType.DROPDOWN)
  .setTitle("Due Date")
  .setFieldName("due_date")
  .addItem("No due date", "one_value", true)
  .addItem("Today", "two_value", false)
  .addItem("Tomorrow", "three_value", false)
  .addItem("This Friday", "four_value", false)
  .addItem("Next Monday", "five_value", false)
  .setOnChangeAction(CardService.newAction().setFunctionName('addLabel'))

   var section = CardService.newCardSection();   
  section.addWidget(dueDateDropDown);

  if(labelData){
     var label = CardService.newTextParagraph().setText(labelData);
    section.addWidget(label);
  }
 // e.somedata = true;
  var card = CardService.newCardBuilder()
  .addSection(section)
  .build();


  return card; 

}

function addLabel(e){
  Logger.log(e);
  var selected = e.formInputs.due_date.toString();
  return buildUi(e,selected);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...