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

C# 使用C和Microsoft Graph SDK从日历获取事件,c#,microsoft-graph-api,microsoft-graph-sdks,C#,Microsoft Graph Api,Microsoft Graph Sdks,我正在尝试开发一个控制台应用程序来列出、删除事件并将其添加到特定用户的日历中。我正在开发一个业务流程。我从列出事件开始 Calendar cal = client .Users["UserName@CompanyName.com"] .Calendars["AAMkAGIzZDM4O...."] .Request() .GetAsync() .Result; 我返回了正确的日历,但事件集合为空。日历上有13个事件。我有日历读/写权限 有什么想法吗

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

Calendar cal =
    client
    .Users["UserName@CompanyName.com"]
    .Calendars["AAMkAGIzZDM4O...."]
    .Request()
    .GetAsync()
    .Result;
我返回了正确的日历,但事件集合为空。日历上有13个事件。我有日历读/写权限


有什么想法吗?

我没有测试c Graph SDK的环境,但我怀疑底层查询没有向Graph请求日历事件,因此该字段为空

使用Graph explorer,我们可以尝试一个等价的查询,并注意只返回有关日历的元数据

得到https://graph.microsoft.com/v1.0/me/calendars

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

“我的日历”示例查询中的所有事件可能就是您要查找的。请求是:

得到https://graph.microsoft.com/v1.0/me/events?$select=主题、正文、正文预览、组织者、与会者、开始、结束、位置

或/calendars/{calendar id}/events,如果需要特定日历的事件

下一步是将此RESTAPI查询转换为SDK语法,以便在应用程序中使用

首先,起点是:

IUserEventsCollectionPage events = await graphClient.Me.Events.Request().GetAsync();

除了查询事件外,您可能还想查看哪些允许您指定开始和结束日期。

我没有测试c Graph SDK的环境,但我怀疑底层查询没有向Graph询问日历事件,因此该字段为空

使用Graph explorer,我们可以尝试一个等价的查询,并注意只返回有关日历的元数据

得到https://graph.microsoft.com/v1.0/me/calendars

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

“我的日历”示例查询中的所有事件可能就是您要查找的。请求是:

得到https://graph.microsoft.com/v1.0/me/events?$select=主题、正文、正文预览、组织者、与会者、开始、结束、位置

或/calendars/{calendar id}/events,如果需要特定日历的事件

下一步是将此RESTAPI查询转换为SDK语法,以便在应用程序中使用

首先,起点是:

IUserEventsCollectionPage events = await graphClient.Me.Events.Request().GetAsync();

除了查询事件外,您可能还想查看哪些事件允许您指定开始和结束日期。

Dan,谢谢您的帖子。读了你的帖子后,我意识到了我的错误。以下是有效的代码:

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

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

丹,谢谢你的来信。读了你的帖子后,我意识到了我的错误。以下是有效的代码:

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

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

这里值得注意的是,日历[…]事件将只提供事件主控


另一种方法是使用日历[…]。CalendarView带有startDateTime和endDateTime的查询选项,这将为您提供该时间范围内的所有事件实例。

这里值得注意的是,日历[…]。事件将只为您提供事件母版


另一种方法是使用日历[…]。CalendarView带有startDateTime和endDateTime的查询选项,这将为您提供该时间范围内的所有事件实例。

我根据Dan的建议修改了代码,并在选择日历后添加了事件。我已经在上面的帖子中展示了代码。非常简单的修复。我根据Dan的建议修改了代码,并在选择日历后添加了事件。我已经在上面的帖子中展示了代码。非常简单的修复。