如何解决在 Apps Script 中,如何在 CardService 中动态更改下拉列表中的值? 更新:
我在更改 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”中的值。
主要问题是,我们如何在运行时添加/更改目标下拉列表中的值,即使在此侧面板创建的最开始点使用其他值对其进行了初始化。
解决方法
您必须在客户端(在 HTML 中使用 JS)监听用户何时在源下拉列表中选择一个选项。并使用 google.script.run
发送信号以在服务器端执行更改目标下拉菜单中的选项的函数。
阅读文档中的 client-server communication 文章。
注意他们如何使用 <script>
提供 HTML,其中包含一个函数“google.script.run”,该函数允许在服务器端调用函数。
更新:
您不得将 HTML/CSS or client-side scripting 与附加组件一起使用。您应该使用 Actions 与用户进行交互。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。