使用Apps脚本动态编辑实时Google表单中的多个选项

use*_*213 8 google-apps-script google-forms

我是洛杉矶的一名高中老师,试图使用Apps Script创建一个课程注册系统.我需要我用于此注册的Google表单:

问题1)根据学生当前的答案选择,在新页面上更新后续多项选择题中可用的选项.

问题2)当多项选项达到"上限"时,从表格中消除选择.

问题1示例)学生在研讨会1中注册"绑定",并进入新页面.脚本根据学生的第一选择编辑该新页面上的可用选项,并从该新页面上的可能选项列表中删除"绑定",因此"礼仪"是他们唯一剩下的选项.

问题2示例)学生可以注册"绑定"或"礼仪",这两个回复最初都在Google表格中提供.30名学生参加了调查,所有30名学生都参加了"打结"研讨会.应用程序脚本引用响应电子表格,意识到"绑定"工作坊已满,然后将其从Google表单的可能选项列表中删除.学生31去登记,他们唯一的选择是"礼仪".

如果我的问题已被问及并回答(相信我,我确实搜索了!)我很欣赏重定向.

pat*_*tt0 7

我相信我们可以毫不费力地实现您的第二个目标,并根据当前的响应状态修改表单。

方法是

  1. 创建表单并将其与响应电子表格相关联
  2. 在该响应电子表格中,创建一个带有函数的脚本(例如 updateForm)
  3. 将该函数与 onFormSubmit 事件绑定,请参阅使用特定于容器的可安装触发器
  4. 分析 updateForm 函数中的响应并使用表单服务修改您的表单

例如

function updateForm(e) {
  if (e.values[1] == 'Yes') {
    Logger.log('Yes');
    var existingForm = FormApp.openById('1jYHXD0TBYoKoRUI1mhY4j....yLWGE2vAm_Ux7Twk61c');
    Logger.log(existingForm);
    var item = existingForm.addMultipleChoiceItem();
     item.setTitle('Do you prefer cats or dogs?')
     .setChoices([
         item.createChoice('Cats'),
         item.createChoice('Dogs')
      ])
     .showOtherOption(true);
  }
}
Run Code Online (Sandbox Code Playgroud)

当谈到实现您的第一个问题中的目标时,它更加微妙,因为表单不会中途提交。可以根据对多项选择题的不同回答访问不同的页面,您的用例可能适合这种方法,尽管它不是很动态。

此外,它可以使用 html 服务来创建完全动态的体验。

如果您需要更多信息,请告诉我。