使用 C# 和 Microsoft Graph SDK 从日历获取事件
Getting Events from Calendar using C# and Microsoft Graph SDK
我正在尝试开发一个控制台应用程序来列出、删除事件并将事件添加到特定用户的日历中。我正在开发一个业务流程。我先列出事件。
Calendar cal =
client
.Users["UserName@CompanyName.com"]
.Calendars["AAMkAGIzZDM4O...."]
.Request()
.GetAsync()
.Result;
我得到了正确的日历,但 Events 集合为空。日历中有 13 个事件。我有日历 Read/Write 权限。
有什么想法吗?
我没有测试 c# Graph SDK 的环境,但我怀疑底层查询不会向 Graph 询问日历事件,因此该字段为空。
使用 Graph 资源管理器 (https://developer.microsoft.com/en-us/graph/graph-explorer#),我们可以尝试等效的查询并注意仅返回有关日历的元数据。
GET https://graph.microsoft.com/v1.0/me/calendars
Graph 浏览器有一些日历示例查询。默认情况下它们可能不可见,因此请单击 'show more samples' link.
all events in my calendar
示例查询可能就是您要查找的内容。要求是:
GET https://graph.microsoft.com/v1.0/me/events?$select=subject,body,bodyPreview,organizer,attendees,start,end,location
(或 /calendars/{calendar-id}/events 如果您想要特定日历的活动)
下一步是将此 REST API 查询转换为 SDK 语法以在您的应用程序中使用。
从this sample开始,起点是:
IUserEventsCollectionPage events = await graphClient.Me.Events.Request().GetAsync();
除了查询事件,您可能还想查看 querying the users calendar view,它允许您指定开始和结束日期。
Dan,感谢 post。看了你的post我才意识到我的错误。这是有效的代码:
string userEmail = "UserName@CompanyName.com";
string calId = "AAMkAGIzZDM4OWI0LWN...….";
ICalendarEventsCollectionPage events = client.Users[$"{userEmail}"]
.Calendars[$"{calId}"]
.Events.Request().GetAsync().Result;
这里值得注意的是Calendars["..."].Events
只会给你活动大师
另一种方法是将 Calendars["..."].CalendarView
与 "startDateTime" 和 "endDateTime" 的查询选项一起使用,这将为您提供该时间范围内的所有事件实例。
我正在尝试开发一个控制台应用程序来列出、删除事件并将事件添加到特定用户的日历中。我正在开发一个业务流程。我先列出事件。
Calendar cal =
client
.Users["UserName@CompanyName.com"]
.Calendars["AAMkAGIzZDM4O...."]
.Request()
.GetAsync()
.Result;
我得到了正确的日历,但 Events 集合为空。日历中有 13 个事件。我有日历 Read/Write 权限。
有什么想法吗?
我没有测试 c# Graph SDK 的环境,但我怀疑底层查询不会向 Graph 询问日历事件,因此该字段为空。
使用 Graph 资源管理器 (https://developer.microsoft.com/en-us/graph/graph-explorer#),我们可以尝试等效的查询并注意仅返回有关日历的元数据。
GET https://graph.microsoft.com/v1.0/me/calendars
Graph 浏览器有一些日历示例查询。默认情况下它们可能不可见,因此请单击 'show more samples' link.
all events in my calendar
示例查询可能就是您要查找的内容。要求是:
GET https://graph.microsoft.com/v1.0/me/events?$select=subject,body,bodyPreview,organizer,attendees,start,end,location
(或 /calendars/{calendar-id}/events 如果您想要特定日历的活动)
下一步是将此 REST API 查询转换为 SDK 语法以在您的应用程序中使用。
从this sample开始,起点是:
IUserEventsCollectionPage events = await graphClient.Me.Events.Request().GetAsync();
除了查询事件,您可能还想查看 querying the users calendar view,它允许您指定开始和结束日期。
Dan,感谢 post。看了你的post我才意识到我的错误。这是有效的代码:
string userEmail = "UserName@CompanyName.com";
string calId = "AAMkAGIzZDM4OWI0LWN...….";
ICalendarEventsCollectionPage events = client.Users[$"{userEmail}"]
.Calendars[$"{calId}"]
.Events.Request().GetAsync().Result;
这里值得注意的是Calendars["..."].Events
只会给你活动大师
另一种方法是将 Calendars["..."].CalendarView
与 "startDateTime" 和 "endDateTime" 的查询选项一起使用,这将为您提供该时间范围内的所有事件实例。