【问题标题】:Dynamic selection options in Google Apps Script for forms用于表单的 Google Apps 脚本中的动态选择选项
【发布时间】:2013-12-10 08:52:28
【问题描述】:

我有this form:

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

我现在要做的是在选择 List Item Grade 时,仅在“Select Student”选择中显示属于该特定年级的那些学生...

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

【问题讨论】:

  • 如何从 Excel 电子表格中获取数据?您使用的是 Google 电子表格吗?
  • 是的,数据来自谷歌电子表格,通过我们编写的谷歌应用脚​​本函数......

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


【解决方案1】:

据我所知,这种类型的客户端事件在 Google 表单中不存在。 Google Apps Script 的脚本机制是为创建表单和其他文档而设计的,但对于客户端功能的影响并不大。

我的建议是将表单拆分为多个页面并使用“根据答案转到页面”功能来实现您想要的功能。

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

参考资料:

Google Apps Script Forms Service

addPageBreakItem

createChoice

【讨论】:

    【解决方案2】:

    编辑:感谢后续 cmets 中的附加信息,问题已得到澄清,归结为:“当用户在 Google 表单中进行选择时,是可以自定义该表单上其他问题中的选项吗?”

    答:没有。见Dynamically edit multiple choice options in live Google Form using Apps Script。

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

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

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

    在触发函数中,使用FormsApp.openById() 或FormsApp.openByUrl(),然后使用item.setChoices() 更新之前的项目选择,就像创建表单时一样从电子表格中读取值。

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

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

    【讨论】:

    • 但是如果您看到我的要求,我不会更改电子表格中的任何内容,我只是想根据成绩过滤学生姓名..所以您认为上述解决方案有帮助吗?
    • 啊哈,感谢您的澄清。在您的问题中使用onChange,以及参考从电子表格中填充选择,导致我走错了路。不,一旦选项列表在浏览器中呈现,您就无法更改它们的内容 - 请参阅 this answer
    猜你喜欢
    • 1970-01-01
    • 2013-11-15
    • 1970-01-01
    • 2014-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多