按值设置下拉列表 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()
中调用它。
是否可以通过操作在 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()
中调用它。