如何通过REST API在Office 365 calendar中创建新分类及获取分类列表?
我来帮你理清这个问题——其实Microsoft 365日历的分类(categories)确实可以通过Microsoft Graph API来操作,你之前可能没找对文档入口,下面一步步给你讲清楚:
获取用户现有分类列表
要获取当前用户的所有日历分类,你可以调用Graph API的me/outlook/masterCategories端点,用GET请求:
GET https://graph.microsoft.com/v1.0/me/outlook/masterCategories
响应会返回用户所有的主分类,包含每个分类的ID、名称和颜色,示例响应片段:
{ "value": [ { "id": "de912e4d-c790-4da9-949c-ccd933aaa0f7", "displayName": "重要", "color": "preset0" }, { "id": "1b9d6bcd-bbfd-4b2d-9b5d-ab8dfbbd4bed", "displayName": "个人", "color": "preset2" } ] }
创建新的分类
如果要创建自定义分类,用POST请求调用同一个端点,请求体里指定分类名称和颜色(颜色必须用微软预定义的枚举值,比如preset0到preset15,对应不同的预设颜色):
POST https://graph.microsoft.com/v1.0/me/outlook/masterCategories Content-Type: application/json { "displayName": "项目任务", "color": "preset5" }
成功创建后会返回新分类的详细信息,后续就可以在事件中引用这个分类的名称了。
给新事件分配分类(设置展示颜色)
在创建日历事件的时候,只需要在请求体中添加categories字段,传入一个包含分类名称的数组即可,示例请求:
POST https://graph.microsoft.com/v1.0/me/events Content-Type: application/json { "subject": "项目评审会", "start": { "dateTime": "2024-06-15T14:00:00", "timeZone": "Asia/Shanghai" }, "end": { "dateTime": "2024-06-15T15:30:00", "timeZone": "Asia/Shanghai" }, "categories": ["项目任务"] }
这样创建的事件就会自动应用该分类对应的颜色展示。
几个关键注意事项
- 分类是用户级别的全局资源,不是绑定到某个特定日历的,所以创建后可以在用户所有日历的事件中使用。
- 颜色不能自定义RGB值,只能使用Graph API提供的
preset0到preset15这些预定义颜色枚举,每个枚举对应Office日历里的一种预设颜色。 - 旧的Office 365 Outlook REST API已经被微软弃用,推荐统一使用Microsoft Graph API,这也是你之前可能找不到相关文档的原因——现在官方的所有操作指南都基于Graph API。
内容的提问来源于stack exchange,提问作者chris770
相关产品推荐
相关产品推荐

