如何通过MS Graph API为日历对象添加自定义元数据?
为M365日历添加自定义元数据的解决方案
一、Single-value Extended Property的GUID使用规则
- 不需要从Exchange Server Protocols Master Property List选择ID,你可以自行生成专属的自定义GUID,用来标识你的应用独有的扩展属性组。
- 格式要求:以
{GUID} Name作为属性ID,比如{12345678-1234-1234-1234-1234567890AB} LocalCalendarId。这个GUID只需保证是你应用专属的即可,随便生成一个(比如通过代码或在线工具生成),无需注册。
二、创建带自定义元数据的日历(请求示例)
在创建日历的请求中直接嵌入扩展属性:
POST /me/calendars Content-Type: application/json { "name": "本地同步日历-市场部", "singleValueExtendedProperties": [ { "id": "{你的自定义GUID} Name LocalCalendarId", "value": "本地数据库日历ID_789" } ] }
三、查询与更新扩展属性
- 查询指定日历的扩展属性:
GET /me/calendars?$select=id,name&$expand=singleValueExtendedProperties($filter=id eq '{你的自定义GUID} Name LocalCalendarId')
- 更新已存在日历的扩展属性:
PATCH /me/calendars/{目标日历ID} Content-Type: application/json { "singleValueExtendedProperties": [ { "id": "{你的自定义GUID} Name LocalCalendarId", "value": "更新后的本地ID_101" } ] }
四、关于Schema Extension的说明
Schema Extension目前不支持Calendar资源(仅适配User、Group、Message、Event等有限资源类型),因此这个方案不适用,优先选择single-value extended property即可。
核心注意事项
- 自定义GUID必须唯一,避免和其他应用的扩展属性冲突;
- 扩展属性名称(如示例中的
LocalCalendarId)可自行定义,只需保持{GUID} Name 属性名的格式; - 若需添加多个自定义字段,可复用同一个GUID,仅修改后面的属性名称,比如
{GUID} Name LocalSyncToken。
内容的提问来源于stack exchange,提问作者Beat
相关产品推荐
相关产品推荐

