我一直试图让这个工作几天,现在我放弃了。从谷歌表格下拉菜单中删除所选项目
我想用电子表格填充下拉列表来创建Google表单。我不会选择任何人与其他人一样。 (如在便饭情况)
例如:
- 我放弃了:
- 梳子
- 刷
- 满满一碗玉米粥
我告诉Thomas,Richa rd和Henry,他们可以各自拥有一个,然后向他们发送我创建的Google表单的链接。汤姆很快,并打开表格1。他输入他的名字,并从三项下拉列表中选择一个梳子。迪克打开表单链接,并从他剩下的两个项目中选择相同的下拉问题。他选择了画笔。哈利有点慢,所以当他回到家时,他打开了我的链接,但是,唉,他只能有一个碗充满糊状物。
我该如何做到这一点?
基于我迄今为止的研究,我将需要在响应电子表格中使用if函数来查看是否有一个项目需要花费(看看单元格是否空置),也许VLOOKUP,但我可以' t清楚地了解如何使它们一起工作。
谢谢
晚安
编辑: 基于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行)。
它不是很优雅,但这是我的能力。祝你好运。
首先,谢谢您花时间回答。我正试图实现这一点,但我有麻烦。当你说列名时,你的意思是单词A1中的单词“库存”?我知道它不知道'Selected'是什么。另外,这些都与我想创建的表单有什么关系?感谢你的宝贵时间。 – user850498
谢谢你花时间。如果公式中的名字丢失并放入列中,我就可以开始工作。但是,这又如何与我想创建的表单绑定? – user850498
当我说一列是'命名的东西',我的意思是整个专栏。 [单击列标题 - 即包含大写字母的单元格 - 然后单击命令'Data/Named and protected ranges ...'并输入名称。]此构造允许您使用'相对编址' - 即一列中的公式只需引用另一列的名称即可引用该列中相应行中的单元格。 – gssi