You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Moodle中批量为多课程特殊需求学生自动添加quiz overrides?

可行自动化解决方案

1. 利用Canvas API批量处理

Canvas提供完整的REST API可直接操作测验override,核心流程如下:

  • 从教务处导出包含学号、课程ID、时长倍率的需求学生名单
  • 编写脚本(Python/JavaScript均可)完成批量操作,核心逻辑示例:
    1. 调用API获取目标学生的所有选课列表
    2. 遍历每门课程,抓取该课程下所有分级测验(通过/api/v1/courses/:course_id/quizzes接口)
    3. 对每个测验,根据倍率计算调整后的时长,调用/api/v1/courses/:course_id/quizzes/:quiz_id/overrides接口创建专属override

示例Python核心代码片段:

import requests
import time

CANVAS_API_TOKEN = "你的Canvas API令牌"
CANVAS_BASE_URL = "学校Canvas实例域名"

def create_quiz_override(course_id, quiz_id, user_id, multiplier):
    # 获取原测验时长
    quiz_res = requests.get(
        f"{CANVAS_BASE_URL}/api/v1/courses/{course_id}/quizzes/{quiz_id}",
        headers={"Authorization": f"Bearer {CANVAS_API_TOKEN}"}
    )
    original_time = quiz_res.json().get("time_limit")
    override_time = original_time * multiplier if original_time else None

    # 创建override
    payload = {
        "quiz_override": {
            "student_ids": [user_id],
            "time_limit": override_time
        }
    }
    requests.post(
        f"{CANVAS_BASE_URL}/api/v1/courses/{course_id}/quizzes/{quiz_id}/overrides",
        json=payload,
        headers={"Authorization": f"Bearer {CANVAS_API_TOKEN}"}
    )
    time.sleep(1.2)  # 规避API速率限制

# 遍历处理学生数据
for student in student_data_list:
    for course_id in student["course_ids"]:
        quizzes = requests.get(
            f"{CANVAS_BASE_URL}/api/v1/courses/{course_id}/quizzes",
            headers={"Authorization": f"Bearer {CANVAS_API_TOKEN}"}
        ).json()
        for quiz in quizzes:
            if "分级测验" in quiz["title"]:  # 筛选目标测验
                create_quiz_override(course_id, quiz["id"], student["user_id"], student["multiplier"])

2. 使用Canvas内置批量Override工具

无需编码的快速方案:

  • 进入课程测验列表,勾选所有需要设置的分级测验
  • 点击批量编辑 → 选择添加学生Override
  • 导入教务处导出的学生-倍率对应表,批量设置时长倍率
  • 注:部分Canvas版本需管理员在账户设置中启用「批量管理Override」功能

3. 自定义Canvas插件(长期稳定方案)

如果学校有技术团队,可开发专属Canvas插件:

  • 对接教务处特殊需求学生数据库,自动同步数据
  • 每学期初自动扫描全校课程的分级测验,为符合条件的学生生成override
  • 内置异常校验(如原测验无时长限制的情况)和手动触发同步功能

关键注意事项

  • 操作前务必备份测验数据,避免误修改
  • 测试阶段先在小范围课程/学生中验证,确认时长计算逻辑正确
  • API调用需遵守Canvas速率限制,默认每分钟最多50次请求

内容的提问来源于stack exchange,提问作者Jae

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 15:50:21