按值设置下拉列表 select

Set dropdown select by value

是否可以通过操作在 Google 应用程序脚本(Gmail 插件)中设置选定的特定下拉项?

示例:我有一个包含 5 个项目(10、20、30、40、50)和一个按钮的下拉菜单。默认选择的下拉项是 10 (dropdown.AddItem(10, 10, true))。当我单击按钮时,我想将下拉列表中的选定项更改为 40。可以这样做吗?

更新:

function onHomepage(e) {
  var max = CardService.newSelectionInput()
      .setType(CardService.SelectionInputType.DROPDOWN)
      .setTitle('Max')
      .setFieldName('max_field')
      .setOnChangeAction(CardService.newAction()
        .setFunctionName('maxHandler'));  

  for (let i = 10; i <= 100; i += 10) {
    var selected = false;
    if (i === 10)
      selected = true;
    max.addItem(i + "$", i, selected);
  }

  var _btn = CardService.newTextButton()
      .setText('Button')
      .setTextButtonStyle(CardService.TextButtonStyle.FILLED)
      .setOnClickAction(CardService.newAction()
        .setFunctionName('btnClicked'));

  var btn = CardService.newButtonSet()
      .addButton(_btn);  

  var section = CardService.newCardSection()
    .addWidget(max)
    .addWidget(btn);

  return CardService.newCardBuilder()
    .setName('cardName')
    .addSection(section)
    .build();
}

function btnClicked(e) {
  var selectedMax = e.formInput.max_field;
  console.log(selectedMax);

  // TODO: set selected dropdown for 40$ item
}

您需要 re-render 单击按钮时的卡片:

function onHomepage(e) {
  return createCard(10)
}

function btnClicked(e) {
  var selectedMax = e.formInput.max_field;

  return createCard(40)
}

function createCard(value) {
  var max = CardService.newSelectionInput()
      .setType(CardService.SelectionInputType.DROPDOWN)
      .setTitle('Max')
      .setFieldName('max_field')
      .setOnChangeAction(CardService.newAction()
        .setFunctionName('maxHandler')); 


  for (let i = 10; i <= 100; i += 10) {
    var selected = false;
    if (i === value)
      selected = true;
    max.addItem(i + "$", i, selected);
  }

  var _btn = CardService.newTextButton()
      .setText('Button')
      .setTextButtonStyle(CardService.TextButtonStyle.FILLED)
      .setOnClickAction(CardService.newAction()
        .setFunctionName('btnClicked'));

  var btn = CardService.newButtonSet()
      .addButton(_btn); 

  var section = CardService.newCardSection()
    .addWidget(max)
    .addWidget(btn);

  return CardService.newCardBuilder()
    .setName('cardName')
    .addSection(section)
    .build();
}

只需将您的卡片创建代码从 onHomepage() 中分离到不同的函数中(例如 createCard() 并从 onHomepage()btnClicked() 中调用它。