在图表中获取会议系列的重复最后一次发生结束日期
Getting recurrence last occurence end date of meeting Series in 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
}
};
};
我想获得最后一次发生的结束日期(或重复结束日期),而不必查询所有发生的事件 and/or 必须在我这边计算它。
这样我就可以查询实例而不必迭代 and/or 设置任意日期。
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();
更新:以下答案无效,因为在使用 numberOfOccurences
参数设置系列时 endDate
为空。
我没有看到查询最后一次出现的直接方法,但类似的方法可能有效。基本上在很长一段时间内查询该系列的实例,select 最后一个。
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
属性。
相关链接:
- RecurrenceRange object 文档
- Example of recurrence in the Graph explorer(点击
Run Query
然后向下滚动)
我以为 dan-silver 会更新他的回答以表明目前不可能。
如果您创建一个设置了多次发生的周期性事件,则结束日期将为空。 所以您要么必须在 API 处随机查询日期,要么查询所有出现的事件以获得系列的总体结束日期 。如果能在 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
}
};
};
我想获得最后一次发生的结束日期(或重复结束日期),而不必查询所有发生的事件 and/or 必须在我这边计算它。 这样我就可以查询实例而不必迭代 and/or 设置任意日期。
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();
更新:以下答案无效,因为在使用 numberOfOccurences
参数设置系列时 endDate
为空。
我没有看到查询最后一次出现的直接方法,但类似的方法可能有效。基本上在很长一段时间内查询该系列的实例,select 最后一个。
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
属性。
相关链接:
- RecurrenceRange object 文档
- Example of recurrence in the Graph explorer(点击
Run Query
然后向下滚动)
我以为 dan-silver 会更新他的回答以表明目前不可能。
如果您创建一个设置了多次发生的周期性事件,则结束日期将为空。 所以您要么必须在 API 处随机查询日期,要么查询所有出现的事件以获得系列的总体结束日期 。如果能在 Graph 的未来版本中添加一些东西会很好。