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

如何通过Moodle Webservice API下载指定问卷的报告数据?

通过API下载Moodle指定问卷的全部报告数据

前提准备

  • 确保Moodle站点已启用Web服务(路径:站点管理 → 高级功能 → 启用Web服务)
  • 创建具备mod/questionnaire:viewreports权限的Web服务用户,并分配目标问卷的访问权限
  • 创建外部服务,关联所需权限,生成有效的Web服务令牌(token)

实现方案

Moodle默认Web服务没有直接提供问卷报告下载的专属函数,可通过模拟手动下载请求+Web服务令牌认证实现:

  1. 构造请求URL
    将手动下载链接与Web服务令牌结合,最终URL格式如下:
https://xxxxx/mod/questionnaire/report.php?instance=1266&action=dwnpg&group=0&wstoken=YOUR_TOKEN

其中:

  • instance=1266:目标问卷的实例ID(与手动链接一致)
  • action=dwnpg:指定下载报告的动作
  • group=0:表示下载所有组的提交数据
  • wstoken=YOUR_TOKEN:替换为你生成的Web服务令牌
  1. 发送请求并保存文件
    以Python为例,使用requests库实现:
import requests

# 配置参数
moodle_base_url = "https://xxxxx"
token = "你的Web服务令牌"
questionnaire_instance = 1266
group_id = 0

# 拼接下载URL
download_url = f"{moodle_base_url}/mod/questionnaire/report.php?instance={questionnaire_instance}&action=dwnpg&group={group_id}&wstoken={token}"

# 发送GET请求并保存报告
response = requests.get(download_url)
response.raise_for_status()  # 捕获请求异常

# 根据实际下载格式调整扩展名(如.xls/.csv)
with open("问卷报告.csv", "wb") as file:
    file.write(response.content)

常见问题排查

  • 权限不足:确认Web服务用户拥有mod/questionnaire:viewreports权限及目标问卷的访问权限
  • 令牌无效:检查令牌是否与正确的用户、外部服务关联,是否过期
  • 请求失败:验证URL参数是否正确,尤其是instance和group值是否匹配实际场景
  • 格式错误:根据问卷设置的报告格式调整保存文件的扩展名

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 07:18:31