在图中以会议系列获得重复上次出现的结束日期

时间:2017-07-03 13:10:21

标签: office365api microsoft-graph

我正在编写一个应用程序来帮助用户安排利用Microsoft Graph的dotnet sdk重复发生的事件。
使用类似于此的代码,我正在使用NumberOfOccurences安排定期事件来限制将要创建的会议数。

var updatingEvent = new Event
{
     Subject = "test",
     Location = new Location { DisplayName = "Montreal" },
     IsAllDay = false,
     Start = getTimeZoneFromDateTime(DateTime.Now, tzLabel),
     End = getTimeZoneFromDateTime(DateTime.Now.AddHours(1), tzLabel),
     OnlineMeetingUrl = "someurl",
     Body = new ItemBody { Content = emailBody.HtmlBody, ContentType = BodyType.Html },
     ShowAs = FreeBusyStatus.Busy,
     Recurrence = new PatternedRecurrence
            {
                Range = new RecurrenceRange
                {
                    StartDate = new Date(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day),
                    Type = RecurrenceRangeType.Numbered,
                    NumberOfOccurrences = 3
                },
                Pattern = new RecurrencePattern
                {
                     Interval = 1,
                    Type = RecurrencePatternType.Daily
                }
            };
};

我想得到最后一次出现的EndDate(或重复结束日期),而不必查询所有出现次数和/或必须在我身边计算它。 这样我就可以查询实例而无需迭代和/或设置任意日期。

var request = graphClient.Users[Settings.SkypeUserEmail].Calendar
                                               .Events[updatedEvent.id]
                                               .Instances
                                               .Request();
request.QueryOptions.Add(new QueryOption("startDateTime", DateTime.Now.AddDays(-1).ToString("s")));
request.QueryOptions.Add(new QueryOption("endDateTime", DateTime.Now.AddDays(5).ToString("s")));

感谢您的帮助!     var instancesPage = await request.GetAsync();

2 个答案:

答案 0 :(得分:0)

更新:由于endDate在使用numberOfOccurences参数设置系列时为{null},因此以下答案无效。

我没有看到查询最后一次出现的直接方式,但是这样的事情可能有效。基本上在很长一段时间内查询系列的实例并选择最后一个。

https://graph.microsoft.com/v1.0/me/events/[series master id]/instances?startdatetime=2010-01-01T00:00:00&enddatetime=2020-01-01T00:00:00&$orderby=start/dateTime desc&$top=1

系列事件中有一个recurrence对象,其中包含endDate字段。例如: example recurrence JSON

如果您没有系列活动,可以在任何重复活动中找到与该系列相对应的seriesMasterId属性。

相关链接:

答案 1 :(得分:0)

我认为dan-silver会更新他的答案,表示目前不可能 如果创建设置了多个匹配项的周期性事件,则结束日期将为null。 因此,您必须在API处抛出随机查询日期或查询所有匹配项,以获得该系列的整体结束日期。在未来的Graph版本中添加它会很不错。