如何使用Microsoft Graph REST API批量创建Outlook日历多个事件
使用Microsoft Graph Batch API批量创建Outlook日历事件实现指南
具体实现步骤
- 提前完成权限准备:确保你使用的应用已经在Azure AD中配置了日历读写权限,需要的权限范围为
Calendars.ReadWrite(创建当前用户日历事件)或Calendars.ReadWrite.Shared(创建共享/其他用户日历事件),权限已经完成用户授权。 - 构造批量请求基础参数:请求方法为POST,请求地址为
https://graph.microsoft.com/v1.0/$batch,请求头必须携带以下参数:Authorization: Bearer {你的有效访问令牌} Accept: application/json Content-Type: application/json - 构造单条日历事件子请求:每个待创建的日历事件对应一个子请求对象,包含以下必填参数:
id:为每个子请求分配唯一的字符串标识,用于后续对应每个事件的创建结果method:固定为POSTurl:创建当前用户事件填/me/events,创建指定用户事件填/users/{用户ID}/eventsheaders:必须包含Content-Type: application/jsonbody:填写日历事件的具体配置,比如主题、起止时间、时区、参与人、地点等字段
- 将所有子请求放入
requests数组中,组装为完整的请求体发送即可。
批量创建日历事件请求体示例
{ "requests": [ { "id": "1", "method": "POST", "url": "/me/events", "headers": { "Content-Type": "application/json" }, "body": { "subject": "团队周会", "start": { "dateTime": "2024-05-20T09:00:00", "timeZone": "China Standard Time" }, "end": { "dateTime": "2024-05-20T10:00:00", "timeZone": "China Standard Time" }, "location": { "displayName": "一号会议室" } } }, { "id": "2", "method": "POST", "url": "/me/events", "headers": { "Content-Type": "application/json" }, "body": { "subject": "产品需求评审", "start": { "dateTime": "2024-05-21T14:00:00", "timeZone": "China Standard Time" }, "end": { "dateTime": "2024-05-21T16:00:00", "timeZone": "China Standard Time" }, "attendees": [ { "emailAddress": { "address": "zhangsan@example.com", "name": "张三" }, "type": "required" } ] } } ] }
注意事项
- 单个Batch请求最多支持包含20个子请求,需要创建超过20个事件时必须拆分为多个Batch请求发送。
- 单个Batch请求的总负载不能超过4MB,如果事件包含超长描述、大量参与人等内容,需要提前拆分请求避免超出大小限制。
- 所有子请求的
id必须唯一,接口返回的responses数组会按照id和每个子请求一一对应,返回结果中status为201代表对应事件创建成功,非201状态可以查看body中的error字段获取失败原因。 - 默认子请求为并行执行,互相不影响,如果需要前一个事件创建成功后再执行下一个,可以在请求体根节点添加
"isSequential": true参数,开启顺序执行模式。 - 不建议在Batch请求中直接创建带附件的日历事件,建议先创建事件拿到事件ID后,单独调用附件上传接口处理附件。
内容的提问来源于stack exchange,提问作者K.Nagare
相关产品推荐
相关产品推荐

