【发布时间】:2019-07-22 06:46:12
【问题描述】:
我创建了一个带有下拉问题的 google 表单,我想使用附加电子表格中的特定列自动填充下拉列表。
我在网上搜索了解决方案,发现了两种有效的方法: 一个名为“Form Ranger”的插件和一个要添加到工作表脚本编辑器的代码
我首先尝试了附加组件,以便更轻松、更快速地安装,它很好地解决了一个主要问题,即更新表单中的列表需要很长时间,这是不可接受的,因此我决定将以下代码添加到工作表中脚本编辑器:
function updateForm(){
// call your form and connect to the drop-down item
var form = FormApp.openById("Your Form ID");
var namesList = form.getItemById("The Drop-Down List ID").asListItem();
// identify the sheet where the data resides needed to populate the drop-down
var ss = SpreadsheetApp.getActive();
var names = ss.getSheetByName("Name of Sheet in Spreadsheet");
// grab the values in the first column of the sheet - use 2 to skip header row
var namesValues = names.getRange(2, 1, names.getMaxRows() - 1).getValues();
var studentNames = [];
// convert the array ignoring empty cells
for(var i = 0; i < namesValues.length; i++)
if(namesValues[i][0] != "")
studentNames[i] = namesValues[i][0];
// populate the drop-down with the array data
namesList.setChoiceValues(studentNames);
}
上面的代码效果更好,因为它在提交时立即更新表单,只有两个问题:
- 它不会完全删除该选项,而是将选项替换为“NOT_FOUND”
- 它根本不会删除最后一个选项;想象一下我有 7 个选项,所以它只适用于六个选项,但根本不会删除整个列表选项
所以如果有人能帮助我以更好的方式完成工作,我将非常感激
【问题讨论】:
-
我无法按照您的操作进行操作,选项列表会根据工作表的值进行更新,但是当您谈论您的问题时,删除选项是什么意思.您能否展示您正在经历/试图实现的目标的屏幕截图?
-
您好 Alberto,感谢您的关注。删除选项是什么意思:好吧,事情就是这样,假设我的工作表中有一个列负责更新表单选项。在列中,我有 3 个选项,例如(选项 1、选项 2、选项 3),我添加了一个公式,一旦在表单中提交,就会自动从列中删除选项。因此,当用户选择选项 1 时,选项 1 从列中删除,我们只有选项 2、选项 3 等。但是当我返回表单时,我仍然有以下 3 个选项(Not_Found、选项 2 和选项 3)
-
为了更清楚,我只需要添加一个代码来告诉表单“如果引用列中的单元格为空或空白,只需完全删除该选项而不添加 Not_Found ”提前致谢
标签: google-apps-script google-sheets google-forms