定期事件是 Outlook 日历的重要组成部分。 无论是与经理每周进行的一对一会议,还是每月第二个星期二的部门评审会议,定期规则只需要创建一次事件,然后让服务器填充系列中的其他内容,从而使过程变得简单。

使定期事件得以“扩展”为单个事件的关键信息点在于定期规则。 此规则同时指定事件重复的频率和持续时间。 Outlook REST API 在 事件资源 重复周期 属性中模拟定期规则。

每个重复周期由两部分组成:定期模式(频率)和定期范围(持续时间)。

重复的第一部分是模式。 它指定事件重复的频率。 例如,事件可以重复“每 3 天”、“每周四”或“每年 7 月 22 日”。模式在 API 中由 recurrencePattern 资源 表示。

recurrencePattern 的特定字段是必需、可选还是忽略取决于模式的类型。

即使将字段忽略,仍需验证该字段。 如果字段包含一组可能值的列表,那么使用允许集以外的值会导致错误,即使此字段已被忽略也是如此。

让我们来看看每个可能的模式类型。

每天定期模式会导致事件基于每次事件之间的天数重复。

index 指定事件在 daysOfsWeek 中指定的允许天数的哪个实例上发生,从当月的第一个实例开始计数。 可能的值是: first second third fourth last 。 默认值为: first interval 指定每次事件之间的月数。 必须设置为 relativeMonthly
  • 在每月的第二个星期三重复此事件

      "pattern": {
        "type": "relativeMonthly",
        "interval": 1,
        "daysOfWeek": [ "Wednesday" ],
        "index": "second"
    
  • 在每月的第一个星期四或星期五重复此事件

      "pattern": {
        "type": "relativeMonthly",
        "interval": 1,
        "daysOfWeek": [ "Thursday", "Friday" ],
        "index": "first"
    

    绝对每年模式使事件在每年的同一月份的同一天(例如,4 月 15 日)重复,它基于每次事件之间的年数。

    index 指定事件在 daysOfsWeek 中指定的允许天数的哪个实例上发生,从当月的第一个实例开始计数。 可能的值是:firstsecondthirdfourthlast。 默认值为:firstmonth 指定事件发生的月份。 interval 指定每次事件之间的年数。 必须设置为 relativeYearly
  • 每年 11 月的最后一个星期三重复此事件

      "pattern": {
        "type": "relativeYearly",
        "interval": 1,
        "daysOfWeek": [ "Wednesday" ],
        "index": "last",
        "month": 11
    

    重复的第二部分是范围。 它指定模式重复的持续时间。 例如,一个事件可以在发生 10 次后于特定日期结束,也可以不结束。 在 API 中,由 recurrenceRange 资源表示范围。

    recurrenceRange 的特定字段是必需还是忽略取决于范围的类型。

    即使将字段忽略,仍需验证该字段。 如果字段包含一组可能值的列表,那么使用允许集以外的值会导致错误,即使此字段已被忽略也是如此。

    让我们来看看每个可能的范围类型。

    编号的范围

    编号的范围使事件(基于模式)从开始日期起按固定次数发生。

    startDate 指定开始应用模式的日期。 startDate 的值必须与事件资源上的 start 属性的日期值对应。 请注意,如果日期不符合模式,第一次会议可能不会在此日期发生。 必须设置为 numbered
  • 此事件重复 10 次

      "range": {
        "type": "numbered",
        "startDate": "2017-04-02",
        "numberOfOccurrences": 10
    

    结束日期范围

    结束日期范围使事件在开始日期和结束日期之间匹配适用模式的所有天数发生。

    startDate 指定开始应用模式的日期。 startDate 的值必须与事件资源上的 start 属性的日期值对应。 请注意,如果日期不符合模式,第一次会议可能不会在此日期发生。 必须设置为 endDate
  • 从 2017 年 7 月 1 日到 2017 年 7 月 31 日重复此事件

      "range": {
        "type": "endDate",
        "startDate": "2017-07-01",
        "endDate": "2017-07-31"
    

    无结束范围

    无结束区域使事件在开始日期后匹配适用模式的所有天数发生。

    startDate 指定开始应用模式的日期。 startDate 的值必须与事件资源上的 start 属性的日期值对应。 请注意,如果日期不符合模式,第一次会议可能不会在此日期发生。 必须设置为 noEnd
  • 从 2017 年 5 月 15 日起重复此事件,无结束日期

      "range": {
        "type": "noEnd",
        "startDate": "2017-05-15"
    

    使用模式和范围创建定期事件

    我们已经分别查看了模式和范围,让我们再来了解一下它们如何协同工作以及如何与事件中的 startend 属性交互。

    创建定期规则

    如要创建定期规则,必须同时指定模式和范围。 模式类型与范围类型可任意搭配使用。 以下是一些示例。

  • 从 2017 年 9 月 4 日开始直到年底,在每周一的下午 1:00 - 1:30 会面

  • weekly 定期模式类型可轻松实现“每周一”的要求。
  • “直到年底”的要求表示 endDate 定期范围类型。
  •   "recurrence": {
        "pattern": {
          "type": "weekly",
          "interval": 1,
          "daysOfWeek": [ "Monday" ]
        "range": {
          "type": "endDate",
          "startDate": "2017-09-04",
          "endDate": "2017-12-31"
    

    由于 2017 年 12 月 31 日是周日,因此,此系列的最后一次事件将于 12 月 25 日星期一发生。

  • 从 2017 年 8 月 29 日开始,在每两个月的第一个星期四的下午 2:00 - 3:00 会面

  • 使用相对每月模式可实现“每两个月的第一个星期四”的要求。 “每两个月”部分表示应将 interval 设置为 2
  • 由于结束日期没有要求,可使用 noEnd 范围类型。
  •   "recurrence": {
        "pattern": {
          "type": "relativeMonthly",
          "interval": 2,
          "daysOfWeek": [ "Thursday" ],
          "index": "first"
        "range": {
          "type": "noEnd",
          "startDate": "2017-08-29"
    

    由于 startDate 的值在 8 月的第一个星期四之后,因此,此系列的第一次事件将在 9 月发生。

  • 了解更多关于与 Outlook 日历集成的信息。
  • 在日历 API 参考中查看其他定期事件示例:
  •