Google Apps脚本中的表单动态选择选项

时间:2013-12-10 08:52:28

标签: google-apps-script google-sheets google-form

我有this form

Screen Shot

如果您看到列表项目 - 学生姓名和成绩将从Google表格填充。

我现在要做的是选择列表项目等级,只显示那些属于“选择学生”选择中属于该特定等级的学生...

怎么做呢,因为form只有两个触发器:onOpen和onEdit?

2 个答案:

答案 0 :(得分:2)

据我所知,Google Forms中不存在此类客户端事件。 Google Apps脚本的脚本编制机制专为创建表单和其他文档而设计,但对于客户端功能而言并未达到很远。

我建议您将表单拆分为多个页面并使用“转到基于答案的页面”功能来实现所需的功能。

使用form.addPageBreakItem()创建页面并使用item.createChoice(value, PageBreakItem)导航到正确的页面。

参考文献:

Google Apps Script Forms Service

addPageBreakItem

createChoice

答案 1 :(得分:1)

修改:由于后续评论中的其他信息,问题已经澄清,并归结为:“当用户在Google表单中进行选择时,是吗?可以自定义该表单上其他问题的选项吗?“

答:不。请参阅Dynamically edit multiple choice options in live Google Form using Apps Script

原始答案 - 这解释了在编辑这些选项(电子表格)的来源时如何更改表单中显示的选项。

如果您的数据位于Google Spreadhsheet中,则源电子表格中的onEditonChange触发器将能够响应名称和成绩列表中的更改。

onChange触发器是“可安装的”,并且能够执行简单onEdit无法执行的操作,例如修改表单,因此在这种情况下它将是更好的选择。

在触发器功能中,使用FormsApp.openById()FormsApp.openByUrl(),然后使用item.setChoices()更新上一个项目选项,从电子表格中读取值,就像创建表单时一样。< / p>

对于奖励分数...而不是盲目地覆盖选择,您可以阅读现有选项并仅在更改时更新它们。

警告 - 在频繁更改的工作表或长列表中,此触发器的计算成本很高。您可能会发现自己遇到了Google的处理限制。