1

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

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

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

有任何想法吗?

4

3 回答 3

3

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

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

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

在此处输入图像描述

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

在此处输入图像描述

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 语法以在您的应用程序中使用。

这个示例开始,出发点是:

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

除了查询事件之外,您可能还想查看查询用户日历视图,该视图允许您指定开始和结束日期。

于 2018-10-08T04:37:36.833 回答
1

值得注意的是,这里Calendars["..."].Events只会给你事件大师。

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

于 2020-05-08T06:42:47.047 回答
0

丹,谢谢你的帖子。看了你的帖子,我意识到了我的错误。这是有效的代码:

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

            ICalendarEventsCollectionPage events = client.Users[$"{userEmail}"]
                .Calendars[$"{calId}"]
                .Events.Request().GetAsync().Result;
于 2018-10-09T00:51:08.470 回答