如何通过API获取Microsoft Teams使用数据并导出对应报告
Teams使用数据编程导出方案
你要找的能力实际已经包含在Microsoft Graph的Microsoft 365使用报告接口体系中,和Teams管理中心的报告数据完全同源,支持7/30/90天周期的数据拉取,具体实现方案如下:
1. 核心调用接口
根据你需要的报告类型,直接调用对应Graph接口即可,替换路径中的period参数为D7/D30/D90即可匹配不同时间周期:
- 用户活动类报告:
GET /reports/getTeamsUserActivityCounts(period='D7') - 设备使用类报告:
GET /reports/getTeamsDeviceUsageUserCounts(period='D7') - 团队维度活动报告:
GET /reports/getTeamsTeamActivityCounts(period='D7') - 点对点通话质量报告:
GET /reports/getTeamsP2pActivityCounts(period='D7') - 会议活动类报告:
GET /reports/getTeamsMeetingActivityCounts(period='D7')
2. 权限要求
调用接口前需要完成权限配置:
- 在Azure AD应用注册中给调用应用授予
Reports.Read.All权限,该权限需要全局管理员、全局读者或报告读者角色的账号完成授权 - 仅支持工作/学校账号调用,个人Microsoft账号无法获取企业级Teams使用数据
- 可以选择应用权限(后台定时拉取)或委托权限(用户登录后拉取)两种授权模式
3. 数据获取方式
- 接口默认返回302重定向响应,重定向地址即为对应周期的CSV报告下载链接,和你从管理中心导出的CSV结构完全一致,直接请求重定向地址即可拿到源数据
- 如果需要结构化的JSON格式返回,在请求头中添加
Prefer: return=minimal,接口会直接返回JSON格式的统计数据,无需额外解析CSV
4. 注意事项
- 所有报告数据存在最长48小时的更新延迟,和管理中心前台展示的数据完全一致,不会存在统计口径差异
- 单次调用最多支持拉取90天内的全量数据,如果需要更长周期的历史数据,建议定期(如每周/每月)拉取数据存入自有数据库做累计
- 接口调用频率限制为每15分钟最多100次,每24小时最多1000次,合理安排拉取频率避免被限流
内容的提问来源于stack exchange,提问作者Dikesh Gandhi
相关产品推荐
相关产品推荐

