google-apps-script - 使用 Apps 脚本动态编辑实时 Google 表单中的多项选择选项

标签 google-apps-script google-forms

我是洛杉矶的一名高中老师,正在尝试使用 Apps 脚本创建类(class)注册系统。我需要用于此次注册的 Google 表单:

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

问题 2)当多项选择选项达到其“上限”时,从表单中消除选择。

问题 1 示例) 一名学生在工作坊 1 中注册“打领带”,并被带到一个新页面。该脚本根据学生的第一选择编辑该新页面上的可用选项,并从该新页面上的可能选项列表中删除“打领带”,因此“礼仪”是他们唯一剩下的选项。

问题 2 示例) 学生可以注册“打领带”或“礼仪”,这两种答案最初都可以在谷歌表格中找到。 30 名学生参加了调查,全部 30 名学生报名参加“打领带”工作坊。 Apps 脚本引用响应电子表格,意识到“打领带”研讨会已满,然后将其从 Google 表单的可能选择列表中删除。 31号同学去报到,他们唯一的选择就是“礼仪”。

如果我的问题已被提出并得到解答(相信我,我确实进行了搜索!),我将不胜感激重定向。

最佳答案

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

方法是

  1. 创建表单并将其与响应电子表格关联
  2. 在该响应电子表格中,创建一个带有函数的脚本(例如 updateForm)
  3. 将该函数与 onFormSubmit 事件绑定(bind),请参阅 Using Container-Specific Installable Triggers .
  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);
  }
}

说到实现第一个问题的目标,就比较微妙了,因为表单不会中途提交。可能的是根据对多项选择题的不同回答进入不同的页面,您的用例可能适合这种方法,尽管它不是很动态。

还可以使用 html 服务来创建完全动态的体验。

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

关于google-apps-script - 使用 Apps 脚本动态编辑实时 Google 表单中的多项选择选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18645999/

相关文章:

pdf - 在 Apps 脚本中将 Google 表格转换为 PDF 格式时文件大小会增加

concurrency - 访问电子表格时锁定脚本不起作用

csv - 将 CSV 附件导入谷歌表格

google-apps-script - 找到一种方法来获取使用的库版本?

google-apps-script - 是否可以将问题和多项选择选项从 Google 表单导出到 Google 表格?

google-apps-script - 无论如何强制谷歌表单总是RTL?

javascript - 如何获取我自己的 Google Drive 文件的 md5Checksum 字段(仅使用类和对象,不使用 http 请求)?

javascript - 根据 Google 表单提交中同一行中的另一个值更改单元格的值

google-apps-script - 使用 Google Apps 脚本将 Google 表单问题添加到表单的特定部分

html - 在 Google 表单(测验)源页面中查看答案键?