求更新方案:每次打开Google Form从50道选择题库随机抽10道
Google Form 随机抽取10道题(50题题库)的最新实现方法
方法一:Google Apps Script 自动化方案(自定义性强)
这是最灵活的实现方式,可适配复杂抽题逻辑:
- 准备题库:将50道选择题(题干、A/B/C/D选项)存入Google Sheet,列名设为
题干、选项A、选项B、选项C、选项D。 - 创建空白表单:新建Google Form,记录表单ID(地址栏中
d/和/edit之间的字符串)。 - 编写脚本:打开表单右上角的「扩展程序」→「Apps Script」,替换默认代码为以下内容(需修改
FORM_ID和SHEET_ID为你的实际ID):
const FORM_ID = "你的表单ID"; const SHEET_ID = "你的题库Sheet ID"; const QUESTION_COUNT = 10; function loadRandomQuestions() { const form = FormApp.openById(FORM_ID); // 清空表单现有问题 const items = form.getItems(); items.forEach(item => form.deleteItem(item)); // 从Sheet读取题库并随机抽取 const sheet = SpreadsheetApp.openById(SHEET_ID).getSheetByName("Sheet1"); const data = sheet.getDataRange().getValues(); data.shift(); // 移除表头 // 随机排序后取前10道 const randomQuestions = data.sort(() => Math.random() - 0.5).slice(0, QUESTION_COUNT); // 将题目添加到表单 randomQuestions.forEach(question => { const title = question[0]; const options = question.slice(1, 5).filter(opt => opt); // 过滤空选项 form.addMultipleChoiceItem() .setTitle(title) .setChoiceValues(options); }); }
- 设置触发条件:在脚本编辑器的「触发器」页面,添加一个「打开表单时」触发的事件,绑定
loadRandomQuestions函数。这样每次用户打开表单,都会自动清空旧题并加载新的10道随机题。
方法二:Google Form 原生问题库功能(零代码)
Google Form已更新原生随机抽题能力,适合快速实现需求:
- 导入题库到问题库:
- 打开目标Google Form,点击「添加问题」旁的下拉箭头,选择「从问题库导入」。
- 点击「创建问题库」,可手动录入50道选择题,或通过「导入问题」从已有的Google Sheet批量导入。
- 设置随机抽题规则:
- 在表单中插入「问题组」,选择「从问题库添加」,选中你创建的题库。
- 在问题组设置中,选择「随机选择10个问题」,并勾选「每次用户打开表单时重新随机排列问题」。
- 完成配置:保存设置后,每次用户打开表单,都会看到从50道题中随机选出的10道题。
两种方案对比
- 原生功能:操作简单、无需代码,但仅支持基础抽题逻辑,无法自定义额外规则(如抽题去重记录、用户分组抽题等)。
- Apps Script方案:完全自定义,可扩展功能(如记录抽题历史、关联用户信息抽题),但需要基础的代码编辑能力。
内容的提问来源于stack exchange,提问作者Math Avengers
相关产品推荐
相关产品推荐

