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

如何通过Microsoft Graph在指定日历中创建事件?

在指定日历中创建Microsoft Graph事件的正确方法

嗨,我明白你的困扰——既然Event的Calendar字段是只读的,那怎么指定要把事件创建到某个特定日历里呢?其实核心思路很简单:不是在请求体里设置日历信息,而是通过请求URL来定位到目标日历,具体步骤如下:

1. 先获取目标日历的ID

如果还不知道你要操作的日历ID,可以先调用这个接口获取当前用户的所有日历列表:

GET /me/calendars

或者针对特定用户:

GET /users/{user-id}/calendars

返回的响应里,每个日历对象都会包含id字段,记下你要目标日历的这个ID值。

2. 构造创建事件的请求URL

用刚才拿到的日历ID,构造创建事件的请求,URL格式如下:

  • 当前用户的日历:
POST /me/calendars/{calendar-id}/events
  • 其他用户的日历(需权限允许):
POST /users/{user-id}/calendars/{calendar-id}/events

3. 准备事件请求体(无需包含Calendar字段)

请求体里只需要填写事件的基本信息,比如主题、时间、参与者等,完全不用加Calendar字段(因为它是只读的)。举个示例:

{
  "subject": "团队同步会议",
  "start": {
    "dateTime": "2024-06-15T09:00:00",
    "timeZone": "Asia/Shanghai"
  },
  "end": {
    "dateTime": "2024-06-15T10:00:00",
    "timeZone": "Asia/Shanghai"
  },
  "location": {
    "displayName": "会议室A"
  },
  "attendees": [
    {
      "emailAddress": {
        "address": "team@example.com",
        "name": "团队成员"
      },
      "type": "required"
    }
  ]
}

4. 权限说明

确保你的应用已经申请了正确的权限,比如Calendars.ReadWrite(委派权限或应用权限,根据你的场景选择),否则会遇到权限不足的错误。

额外提示:用SDK简化操作

如果用Microsoft Graph SDK的话,代码会更简洁。比如C#示例:

var graphClient = new GraphServiceClient(authProvider);

var @event = new Event
{
    Subject = "团队同步会议",
    Start = new DateTimeTimeZone
    {
        DateTime = "2024-06-15T09:00:00",
        TimeZone = "Asia/Shanghai"
    },
    End = new DateTimeTimeZone
    {
        DateTime = "2024-06-15T10:00:00",
        TimeZone = "Asia/Shanghai"
    },
    Location = new Location
    {
        DisplayName = "会议室A"
    }
};

await graphClient.Me.Calendars["{calendar-id}"].Events
    .Request()
    .AddAsync(@event);

这样就能精准地把事件创建到你指定的日历里啦!

内容的提问来源于stack exchange,提问作者Noah Oliphant

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 07:47:44