我一直试图让这个工作几天,我放弃了。
我想创建一个带有下拉列表的 Google 表单,该表单填充了电子表格。我没有任何人选择与其他任何人一样的东西。(就像在聚餐的情况下)
例子:
- 我正在放弃:
- 梳子
- 一把刷子
- 一碗糊状
我告诉 Thomas、Richard 和 Henry,他们每个人都可以拥有一个,然后向他们发送一个指向我创建的 Google 表单的链接。汤姆很快就打开了第一张表格。他输入他的名字并从三项下拉列表中选择一个梳子。迪克打开表单链接,并在同一个下拉问题中从剩余的两个项目中选择。他选择画笔。哈利有点慢吞吞,所以当他回到家时,他打开了我的链接,但是,唉,他只能有一个装满糊状的碗。
我怎样才能完成这项工作?
根据我到目前为止的研究,我将需要使用响应电子表格上的 if 函数来查看是否有一个项目(查看单元格是否空置)并且可能是 VLOOKUP,但我无法获得清楚地了解如何使它们协同工作。
谢谢,
晚安
编辑:根据 gssi 的回答,我想发布代码并描述我的做法。
function updateListChoices(item){
var inventory = (SpreadsheetApp.openById(theIdOfTheResponceSpreadsheet)
.getSheetByName("inventory")
.getDataRange()
.getValues());
var selected = (SpreadsheetApp.openById("0Al-3LXunCqgodHB5RGNpR0RyQ0pERmVnek1JeUJKS0E")
.getSheetByName("responses")
.getDataRange()
.getValues());
var choices = [];
var selectedReal = [];
for (var i = 0; i< selected.length; i+=1){
selectedReal.push(selected[i][2]) }
for (var i = 1; i< inventory.length; i+=1){
if(selectedReal.indexOf(inventory[i][0])=== -1){
choices.push(item.createChoice(inventory[i][0]));}
}
item.setChoices(choices);
}
var LIST_DATA = [{title:"the title of the question", sheet:"inventory"}]
function updateLists() {
var form = FormApp.getActiveForm();
var items = form.getItems();
for (var i = 0; i < items.length; i += 1){
for (var j = 0; j < LIST_DATA.length; j+=1) {
var item = items[i]
if (item.getIndex() === 1){
updateListChoices(item.asListItem(), "inventory");
break;
}
}
}
}
在窗体的构建中,单击tools
菜单,然后单击script editor
。将此处的代码(根据您的需要进行更改)复制到脚本编辑器并点击保存。单击Resources
菜单并点击project triggers
(第一个选项)。单击Add trigger
。选择updateLists
from form
在发送时执行一次,在打开时执行一次(您应该以 2 行结束。)
它不是很优雅,但这就是我的能力。祝你好运。