Планирование повторных встреч, как повторяющихся событий в Outlook
Повторяющиеся события — важная составляющая работы с календарями в Outlook. Будь то еженедельная встреча один на один с вашим руководителем или обзорная встреча всего отдела, которая проводится во второй вторник каждого месяца, повторяющиеся события позволяют легко создать событие один раз и позволить серверу заполнить остальную часть серии.
Главный элемент, благодаря которому повторяющиеся события превращаются в отдельные экземпляры, — это правило повторения. Правило определяет, как часто и как долго повторяется событие. REST API для Outlook моделирует правила повторения в свойстве recurrenceресурса event.
Каждое повторение состоит из двух частей: шаблон повторения (как часто) и диапазон повторения (как долго).
Расписания повторения
Первая часть правила повторения — расписание. Оно задает частоту повторения события. Например, событие может повторяться "каждые 3 дня", "каждый четверг" или "22 июля каждый год". Шаблон представлен в API ресурсом recurrencePattern.
В зависимости от того, каков тип расписания, те или иные поля ресурса recurrencePattern могут быть обязательными, необязательными или игнорируемыми.
Примечание.
Даже если поле игнорируется, оно все равно проверяется. Если для поля задан список возможных значений, то при использовании значения, не входящего в этот список, возникнет ошибка, даже если поле игнорируется.
Рассмотрим все возможные типы расписаний.
Ежедневное
При использовании ежедневного расписания повторения событие повторяется в соответствии с указанным количеством дней между экземплярами.
Соответствующие свойства
Свойство | Важность | Описание |
---|---|---|
interval | Обязательный | Задает количество дней между повторениями. |
type | Обязательный | Необходимо указать значение daily . |
Примеры
Повторять это событие каждый день
"pattern": { "type": "daily", "interval": 1 }
Повторять это событие каждые три дня
"pattern": { "type": "daily", "interval": 3 }
Еженедельное
При использовании еженедельного расписания повторения событие повторяется в одни и те же дни недели в соответствии с указанным количеством недель между последовательностями экземпляров.
Соответствующие свойства
Свойство | Важность | Описание |
---|---|---|
daysOfWeek | Обязательный | Указывает, в какие дни недели происходит событие. |
firstDayOfWeek | Необязательный | Указывает, с какого дня начинается неделя. Значение по умолчанию: Sunday . |
interval | Обязательный | Задает количество недель между наборами повторений. |
type | Обязательный | Необходимо указать значение weekly . |
Примеры
Повторять это событие каждый четверг
"pattern": { "type": "weekly", "interval": 1, "daysOfWeek": [ "Thursday" ] }
Повторять это событие каждый понедельник и вторник
"pattern": { "type": "weekly", "interval": 2, "daysOfWeek": [ "Monday", "Tuesday" ] }
Абсолютное ежемесячное
При использовании абсолютного ежемесячного расписания событие повторяется в одно и то же число месяца (например, 15-е) в соответствии с указанным количеством месяцев между повторениями.
Соответствующие свойства
Свойство | Важность | Описание |
---|---|---|
dayOfMonth | Обязательный | Указывает, в какой день месяца происходит событие. |
interval | Обязательный | Задает количество месяцев между повторениями. |
type | Обязательный | Необходимо указать значение absoluteMonthly . |
Примеры
Повторять это событие 15-го числа каждого месяца
"pattern": { "type": "absoluteMonthly", "interval": 1, "dayOfMonth": 15 }
Повторять это событие ежеквартально (каждые 3 месяца) 7-го числа
"pattern": { "type": "absoluteMonthly", "interval": 3, "dayOfMonth": 7 }
Относительное ежемесячное
При использовании относительного ежемесячного расписания повторения событие повторяется в один и тот же день одной и той же (по счету) недели месяца в соответствии с указанным количеством месяцев между повторениями. Пример: "каждую вторую среду месяца".
Соответствующие свойства
Свойство | Важность | Описание |
---|---|---|
daysOfWeek | Обязательный | Указывает, в какие дни недели может происходить событие. Относительные ежемесячные события происходят только раз в месяц, поэтому если указать несколько значений, событие будет назначено на первый день, соответствующий расписанию. |
index | Необязательный | Указывает, в какой из разрешенных дней, указанных в daysOfsWeek, происходит событие (начиная с первого экземпляра за месяц). Возможные значения: first , second , third , fourth и last . Значение по умолчанию: first . |
interval | Обязательный | Задает количество месяцев между повторениями. |
type | Обязательный | Необходимо указать значение relativeMonthly . |
Примеры
Повторять это событие во вторую среду каждого месяца
"pattern": { "type": "relativeMonthly", "interval": 1, "daysOfWeek": [ "Wednesday" ], "index": "second" }
Повторять это событие в первый четверг или первую пятницу каждого месяца
"pattern": { "type": "relativeMonthly", "interval": 1, "daysOfWeek": [ "Thursday", "Friday" ], "index": "first" }
Абсолютное ежегодное
При использовании абсолютного ежегодного расписания событие повторяется в одни и те же месяц и день года (например, 15 апреля) в соответствии с указанным количеством лет между повторениями.
Соответствующие свойства
Свойство | Важность | Описание |
---|---|---|
dayOfMonth | Обязательный | Указывает, в какой день месяца происходит событие. |
month | Обязательный | Указывает, в какой месяц происходит событие. |
interval | Обязательный | Задает количество лет между повторениями. |
type | Обязательный | Необходимо указать значение absoluteYearly . |
Пример
Повторять это событие 15 апреля каждого года
"pattern": { "type": "absoluteYearly", "interval": 1, "dayOfMonth": 15, "month": 4 }
Относительное ежегодное
При использовании относительного ежегодного расписания повторения событие повторяется в один и тот же день одной и той же недели определенного месяца в соответствии с указанным количеством лет между повторениями. Пример: "каждую последнюю среду ноября".
Соответствующие свойства
Свойство | Важность | Описание |
---|---|---|
daysOfWeek | Обязательный | Указывает, в какие дни недели может происходить событие. Относительные ежегодные события происходят только раз в год, поэтому если указать несколько значений, событие будет назначено на первый день, соответствующий расписанию. |
index | Необязательный | Указывает, в какой из разрешенных дней, указанных в daysOfsWeek, происходит событие (начиная с первого экземпляра за месяц). Возможные значения: first , second , third , fourth и last . Значение по умолчанию: first . |
month | Обязательный | Указывает, в какой месяц происходит событие. |
interval | Обязательный | Задает количество лет между повторениями. |
type | Обязательный | Необходимо указать значение relativeYearly . |
Примеры
Повторять это событие в последнюю среду ноября каждого года
"pattern": { "type": "relativeYearly", "interval": 1, "daysOfWeek": [ "Wednesday" ], "index": "last", "month": 11 }
Диапазоны повторения
Вторая часть правила повторения — диапазон. Он задает продолжительность повторения расписания. Например, событие может быть отменено после 10 повторений, в указанную дату или повторяться бесконечно. Диапазон представлен в API ресурсом recurrenceRange.
В зависимости от того, каков тип диапазона, те или иные поля ресурса recurrenceRange могут быть обязательными или игнорируемыми.
Примечание.
Даже если поле игнорируется, оно все равно проверяется. Если для поля задан список возможных значений, то при использовании значения, не входящего в этот список, возникнет ошибка, даже если поле игнорируется.
Рассмотрим все возможные типы диапазонов.
Нумерованный диапазон
Нумерованный диапазон задает фиксированное количество повторений события (в соответствии с расписанием) с даты начала.
Соответствующие свойства
Свойство | Важность | Описание |
---|---|---|
numberOfOccurrences | Обязательный | Задает количество повторений. Это должно быть положительное целое число. |
recurrenceTimeZone | Необязательный | Задает часовой пояс для свойства startDate. Если это свойство не задано, используется часовой пояс события. |
startDate | Обязательный | Задает дату, с которой начинает применяться расписание. Значение свойства startDate ДОЛЖНО соответствовать значению даты в свойстве startресурса event. Обратите внимание, что первого собрания может не быть в этот день, если он не соответствует расписанию. |
type | Обязательный | Необходимо указать значение numbered . |
Примеры
Повторять это событие 10 раз
"range": { "type": "numbered", "startDate": "2017-04-02", "numberOfOccurrences": 10 }
Диапазон с датой окончания
При использовании диапазона с датой окончания событие повторяется во все дни, соответствующие применимому расписанию, между датами начала и окончания.
Соответствующие свойства
Свойство | Важность | Описание |
---|---|---|
endDate | Обязательный | Задает дату, с которой расписание перестает применяться. Обратите внимание, что последнего собрания может не быть в этот день, если он не соответствует расписанию. |
recurrenceTimeZone | Необязательный | Задает часовой пояс для свойств startDate и endDate. Если это свойство не задано, используется часовой пояс события. |
startDate | Обязательный | Задает дату, с которой начинает применяться расписание. Значение свойства startDate ДОЛЖНО соответствовать значению даты в свойстве startресурса event. Обратите внимание, что первого собрания может не быть в этот день, если он не соответствует расписанию. |
type | Обязательный | Необходимо указать значение endDate. |
Примеры
Повторять это событие с 1 июля 2017 г. до 31 июля 2017 г.
"range": { "type": "endDate", "startDate": "2017-07-01", "endDate": "2017-07-31" }
Бесконечный диапазон
При использовании бесконечного диапазона событие происходит во все дни, соответствующие применимому расписанию, после даты начала.
Соответствующие свойства
Свойство | Важность | Описание |
---|---|---|
recurrenceTimeZone | Необязательный | Задает часовой пояс для свойства startDate. Если это свойство не задано, используется часовой пояс события. |
startDate | Обязательный | Задает дату, с которой начинает применяться расписание. Значение свойства startDate ДОЛЖНО соответствовать значению даты в свойстве startресурса event. Обратите внимание, что первого собрания может не быть в этот день, если он не соответствует расписанию. |
type | Обязательный | Необходимо указать значение noEnd . |
Примеры
Бесконечно повторять это событие с 15 мая 2017 г.
"range": { "type": "noEnd", "startDate": "2017-05-15" }
Создание повторяющихся событий с помощью расписаний и диапазонов
Теперь, когда мы рассмотрели расписания и диапазоны по отдельности, посмотрим на их совместную работу и взаимодействие со свойствами start и end события.
Создание правила повторения
Чтобы создать правило повторения, необходимо указать и расписание, и диапазон. Расписания всех типов совместимы с диапазонами всех типов. Вот несколько примеров.
Примеры
Проведение собраний с 13:00 до 13:30 каждый понедельник, начиная с 4 сентября 2017 г., до конца года
- Требование "каждый понедельник" легко соблюдается с помощью расписания повторения типа
weekly
. - Требование "до конца года" указывает на диапазон повторения типа
endDate
.
"recurrence": { "pattern": { "type": "weekly", "interval": 1, "daysOfWeek": [ "Monday" ] }, "range": { "type": "endDate", "startDate": "2017-09-04", "endDate": "2017-12-31" } }
31 декабря 2017 г. выпадает на воскресенье, поэтому последнее событие в этой серии произойдет в понедельник, 25 декабря.
- Требование "каждый понедельник" легко соблюдается с помощью расписания повторения типа
Проведение собраний с 14:00 до 15:00 в первый четверг каждого второго месяца, начиная с 29 августа 2017 г.
- Требование "первый четверг каждого второго месяца" можно соблюдать с помощью относительного ежемесячного расписания. Фрагмент "каждого второго месяца" указывает, что для свойства interval необходимо задать значение
2
. - Дата окончания не указана, поэтому можно использовать диапазон типа
noEnd
.
"recurrence": { "pattern": { "type": "relativeMonthly", "interval": 2, "daysOfWeek": [ "Thursday" ], "index": "first" }, "range": { "type": "noEnd", "startDate": "2017-08-29" } }
Значение свойства startDate является более поздней датой, чем первый четверг августа, поэтому первое событие в этой серии произойдет в сентябре.
- Требование "первый четверг каждого второго месяца" можно соблюдать с помощью относительного ежемесячного расписания. Фрагмент "каждого второго месяца" указывает, что для свойства interval необходимо задать значение
Связанные материалы
- Узнайте больше об интеграции с Календарем Outlook.
- Другие примеры повторяющихся событий см. в справочнике по API календаря: