使用C#和Microsoft Graph SDK从日历获取事件

时间:2018-10-07 22:08:09

标签: c# microsoft-graph microsoft-graph-sdks

我正在尝试开发一个控制台应用程序,以列出,删除事件并将事件添加到特定用户的日历中。我正在开发业务流程。我首先列出事件。

Calendar cal =
    client
    .Users["UserName@CompanyName.com"]
    .Calendars["AAMkAGIzZDM4O...."]
    .Request()
    .GetAsync()
    .Result;

我获得了正确的日历,但是“事件”集合为空。日历中有13个事件。我具有日历读/写权限。

有什么想法吗?

3 个答案:

答案 0 :(得分:3)

我没有测试c#Graph SDK的环境,但是我怀疑基础查询不会向Graph询问日历事件,所以这就是字段为空的原因。

使用图形浏览器(https://developer.microsoft.com/en-us/graph/graph-explorer#),我们可以尝试进行等效查询,并注意仅返回有关日历的元数据。

GET https://graph.microsoft.com/v1.0/me/calendars

enter image description here

图浏览器有一些日历示例查询。默认情况下,它们可能不可见,因此请单击“显示更多样本”链接。

enter image description here

您可能正在寻找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,以便您指定开始和结束日期。

答案 1 :(得分:0)

丹,谢谢你的帖子。阅读您的帖子后,我意识到自己的错误。这是有效的代码:

            string userEmail = "UserName@CompanyName.com";
            string calId = "AAMkAGIzZDM4OWI0LWN...….";

            ICalendarEventsCollectionPage events = client.Users[$"{userEmail}"]
                .Calendars[$"{calId}"]
                .Events.Request().GetAsync().Result;

答案 2 :(得分:0)

在这里值得注意的是Calendars["..."].Events仅会为您提供事件主控。

另一种选择是将Calendars["..."].CalendarView与查询选项“ startDateTime”和“ endDateTime”一起使用,这将为您提供该时间范围内的所有事件实例。