我正在编写一个应用程序来帮助用户安排利用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();
答案 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
字段。例如:
如果您没有系列活动,可以在任何重复活动中找到与该系列相对应的seriesMasterId
属性。
相关链接:
Run Query
然后向下滚动)答案 1 :(得分:0)
我认为dan-silver会更新他的答案,表示目前不可能 如果创建设置了多个匹配项的周期性事件,则结束日期将为null。 因此,您必须在API处抛出随机查询日期或查询所有匹配项,以获得该系列的整体结束日期。在未来的Graph版本中添加它会很不错。