【发布时间】:2021-08-16 10:29:57
【问题描述】:
我在更改 AppsScript 中下拉列表的值时遇到问题。我实际上需要帮助来根据另一个下拉列表的选定值/项目更改下拉列表中的数据/列表。
我的问题是,我们如何在运行时添加/更改目标下拉列表中的值,即使它在此侧面板创建的一开始就使用其他值进行了初始化。
编辑-这是下拉菜单的屏幕截图。其中,"From" 是 "origin","To" 是 "destination"
我想要的是 - 例如如果在origin 下拉列表中,用户选择了“法语”,那么在destination 下拉列表中,它应该只显示“芬兰语”和“弗里斯兰语”。我怎样才能做到这一点?
以下是我用来在应用脚本侧面板中创建下拉菜单的代码。此代码在两个下拉列表中添加 LM 常量项。
const LM = [
{ text: 'Finnish', val: 'fi' },
{ text: 'French', val: 'fr' },
{ text: 'Frisian', val: 'fy' },
{ text: 'Galician', val: 'gl' },
{ text: 'Georgian', val: 'ka' },
{ text: 'German', val: 'de' },
-----
-----
-----
]
function createSelectionCard(){
builder.addSection(CardService.newCardSection()
.addWidget(generateLanguagesDropdown('origin', 'From: ', DEFAULT_ORIGIN_LAN)
.setOnChangeAction(CardService.newAction().setFunctionName('onSourceLanguageChange'))));
builder.addSection(CardService.newCardSection()
.addWidget(generateLanguagesDropdown('destination', 'To: ', destinationLanguage)));
}
function generateLanguagesDropdown(fieldName, fieldTitle, previousSelected) {
var selectionInput = CardService.newSelectionInput().setTitle(fieldTitle)
.setFieldName(fieldName)
.setType(CardService.SelectionInputType.DROPDOWN);
LM.forEach((language, index, array) => {
selectionInput.addItem(language.text, language.val, language.val == previousSelected);
})
return selectionInput;
}
我在onSourceLanguageChange() 事件方法中获取所选项目。现在基于此选择,我需要更改下拉列表中的值“destination”。
主要问题是,我们如何在运行时添加/更改目标下拉列表中的值,即使在创建此侧面板的一开始就使用其他值进行了初始化。强>
【问题讨论】:
-
“我想要的是 - 例如,在原产地下拉菜单中,用户选择了“法语”,然后在目的地下拉菜单中,它应该只显示“芬兰语”和“弗里斯兰语”。我怎样才能做到这一点?“你有这个从 -> 到任何地方的列表吗?
-
@Aerials 是的,我有这份清单。我的主要问题是,我们如何在目标下拉列表中添加/更改值,即使它在此侧面板创建的起点已被其他值初始化。
标签: google-apps-script dropdown add-on