Agendar compromissos repetidos como eventos recorrentes no Outlook

Eventos recorrentes são uma parte importante do calendário do Outlook. Seja uma reunião semanal individual com seu gerente ou uma reunião de revisão de toda a divisão que ocorre na segunda terça-feira de cada mês, eventos recorrentes permitem que o evento seja criado uma fez e que o servidor preencha o restante da série.

O principal dado que permite que os eventos recorrentes sejam "expandidos" em ocorrências individuais é a regra de recorrência. A regra especifica a frequência de repetição do evento e sua duração. As regras de recorrência modelam as APIs REST do Outlook na propriedade recorrência do recurso de evento.

Cada recorrência é composta de duas partes: o padrão de recorrência (frequência) e o intervalo de recorrência (duração).

Padrões de recorrência

A primeira parte de uma recorrência é o padrão. Ele especifica a frequência com que o evento se repete. Por exemplo, um evento pode repetir "a cada 3 dias", "todas as quintas-feiras" ou "em 22 de julho todos os anos". Um padrão é representado na API pelo recurso recorrênciaPattern.

Dependendo do tipo de padrão, determinados campos do recurrencePattern são obrigatórios, opcionais ou ignorados.

Observação

Mesmo que um campo seja ignorado, ele ainda é validado. Se um campo tiver um conjunto fixo de valores possíveis, usar um valor fora do conjunto permitido causa um erro, mesmo que esse campo seja ignorado.

Vamos dar uma olhada em cada um dos tipos de possíveis de padrão.

Diariamente

O padrão de recorrência diária faz com que um evento se repita com base em um número de dias entre cada ocorrência.

Propriedades relevantes

Propriedade Relevância Descrição
intervalo Obrigatório Especifica o número de dias entre cada ocorrência.
type Obrigatório Tem que ser definida como daily.

Exemplos

  • Repita esse evento todos os dias

      "pattern": {
        "type": "daily",
        "interval": 1
      }
    
  • Repita esse evento a cada 3 dias

      "pattern": {
        "type": "daily",
        "interval": 3
      }
    

Semanalmente

O padrão de recorrência semanal faz com que um evento se repita no mesmo dia ou dias da semana, com base no número de semanas entre cada conjunto de ocorrências.

Propriedades relevantes

Propriedade Relevância Descrição
daysOfWeek Obrigatório Especifica em quais dias da semana o evento ocorre.
firstDayOfWeek Opcional Especifica qual dia é considerado o primeiro dia da semana. Valor padrão: Sunday.
intervalo Obrigatório Especifica o número de semanas entre cada conjunto de ocorrências.
type Obrigatório Tem que ser definida como weekly.

Exemplos

  • Repita esse evento toda quinta-feira

      "pattern": {
        "type": "weekly",
        "interval": 1,
        "daysOfWeek": [ "Thursday" ]
      }
    
  • Repita esse evento em segundas e terças alternadas

      "pattern": {
        "type": "weekly",
        "interval": 2,
        "daysOfWeek": [
          "Monday",
          "Tuesday"
        ]
      }
    

Mensal absoluto

O padrão mensal absoluto faz com que um evento se repita no mesmo dia do mês (por exemplo, dia 15), com base no número de meses entre cada ocorrência.

Propriedades relevantes

Propriedade Relevância Descrição
dayOfMonth Obrigatório Especifica em quais dias do mês o evento ocorre.
intervalo Obrigatório Especifica o número de meses entre cada ocorrência.
type Obrigatório Tem que ser definida como absoluteMonthly.

Exemplos

  • Repita esse evento no 15º dia de cada mês

      "pattern": {
        "type": "absoluteMonthly",
        "interval": 1,
        "dayOfMonth": 15
      }
    
  • Repita esse evento trimestralmente (a cada 3 meses) no dia 7

      "pattern": {
        "type": "absoluteMonthly",
        "interval": 3,
        "dayOfMonth": 7
      }
    

Mensal relativo

O padrão mensal relativo faz com que um evento se repita no mesmo dia da semana na mesma posição relativa do mês, com base no número de meses entre cada ocorrência. Por exemplo, "toda segunda quarta-feira do mês".

Propriedades relevantes

Propriedade Relevância Descrição
daysOfWeek Obrigatório Especifica em quais dias da semana o evento pode ocorrer. Eventos mensais relativos apenas ocorrerem uma vez por mês, portanto, se mais de um valor for especificado, o evento ocorrerá no primeiro dia que satisfaz o padrão.
índice Opcional Especifica em qual instância dos dias permitidos especificados em daysOfsWeek o evento ocorre, contando a partir da primeira instância no mês. Valores possíveis: first, second, third, fourth e last. Valor padrão: first.
intervalo Obrigatório Especifica o número de meses entre cada ocorrência.
type Obrigatório Tem que ser definida como relativeMonthly.

Exemplos

  • Repita esse evento na segunda quarta-feira de cada mês

      "pattern": {
        "type": "relativeMonthly",
        "interval": 1,
        "daysOfWeek": [ "Wednesday" ],
        "index": "second"
      }
    
  • Repita esse evento na primeira quinta ou sexta-feira de cada mês

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

Anual absoluto

O padrão anual absoluto faz com que um evento se repita no mesmo mês e dia (por exemplo, dia 15 de abril), com base no número de anos entre cada ocorrência.

Propriedades relevantes

Propriedade Relevância Descrição
dayOfMonth Obrigatório Especifica em quais dias do mês o evento ocorre.
Mês Obrigatório Especifica em qual mês o evento ocorre.
intervalo Obrigatório Especifica o número de anos entre cada ocorrência.
type Obrigatório Tem que ser definida como absoluteYearly.

Exemplo

  • Repita esse evento em 15 de abril todo ano

      "pattern": {
        "type": "absoluteYearly",
        "interval": 1,
        "dayOfMonth": 15,
        "month": 4
      }
    

Anual relativo

O padrão anual relativo faz com que um evento se repita no mesmo dia da semana na mesma posição relativa de um mês específico, com base no número de anos entre cada ocorrência. Por exemplo, "toda última quarta-feira de novembro".

Propriedades relevantes

Propriedade Relevância Descrição
daysOfWeek Obrigatório Especifica em quais dias da semana o evento pode ocorrer. Eventos anuais relativos apenas ocorrerem uma vez por ano, portanto, se mais de um valor for especificado, o evento ocorrerá no primeiro dia que satisfaz o padrão.
índice Opcional Especifica em qual instância dos dias permitidos especificados em daysOfsWeek o evento ocorre, contando a partir da primeira instância no mês. Valores possíveis: first, second, third, fourth e last. Valor padrão: first.
Mês Obrigatório Especifica em qual mês o evento ocorre.
intervalo Obrigatório Especifica o número de anos entre cada ocorrência.
type Obrigatório Tem que ser definida como relativeYearly.

Exemplos

  • Repita esse evento na última quarta-feira de novembro a cada ano

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

Intervalos de recorrência

A segunda parte de uma recorrência é o intervalo. Especifica por quanto tempo o padrão se repete. Por exemplo, um evento poderia terminar após 10 ocorrências, em uma data específica ou poderia não ter fim. Um intervalo é representado na API pelo recurso recurrenceRange.

Dependendo do tipo de intervalo, determinados campos do recurrenceRange são obrigatórios ou ignorados.

Observação

Mesmo que um campo seja ignorado, ele ainda é validado. Se um campo tiver um conjunto fixo de valores possíveis, usar um valor fora do conjunto permitido causa um erro, mesmo que esse campo seja ignorado.

Vamos dar uma olhada em cada um dos tipos de possíveis de intervalo.

Intervalo numerado

O intervalo numerado faz com que um evento ocorra um número fixo de vezes (com base no padrão) de uma data de início.

Propriedades relevantes

Propriedade Relevância Descrição
numberOfOccurrences Obrigatório Especifica o número de ocorrências. Deve ser um número inteiro positivo.
recurrenceTimeZone Opcional Especifica o fuso horário para a propriedade startDate. Se a propriedade não for especificada, será usado o fuso horário do evento.
startDate Obrigatório Especifica a data para começar a aplicar o padrão. O valor de startDate DEVE corresponder ao valor da data da propriedade iniciar no recurso de evento. Observação: Esta primeira ocorrência da reunião poderá não ocorrer nessa data se ela não se encaixar no padrão.
type Obrigatório Tem que ser definida como numbered.

Exemplos

  • Repita esse evento 10 vezes

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

Intervalo de datas de término

O intervalo de datas de término faz com que um evento ocorra em todos os dias que se encaixem no padrão aplicável entre uma data de início e uma data de término.

Propriedades relevantes

Propriedade Relevância Descrição
endDate Obrigatório Especifica a data para parar de aplicar o padrão. Observação: Esta última ocorrência da reunião pode não ocorrer nessa data se ela não se encaixar no padrão.
recurrenceTimeZone Opcional Especifica o fuso horário das propriedades startDate e endDate. Se a propriedade não for especificada, será usado o fuso horário do evento.
startDate Obrigatório Especifica a data para começar a aplicar o padrão. O valor de startDate DEVE corresponder ao valor da data da propriedade iniciar no recurso de evento. Observação: Esta primeira ocorrência da reunião poderá não ocorrer nessa data se ela não se encaixar no padrão.
type Obrigatório Tem que ser definida como endDate.

Exemplos

  • Repita esse evento de 1.º de julho de 2017 a 31 de julho de 2017

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

Intervalo sem término

O intervalo sem término faz com que um evento ocorra em todos os dias que se encaixem no padrão aplicável após uma data de início.

Propriedades relevantes

Propriedade Relevância Descrição
recurrenceTimeZone Opcional Especifica o fuso horário para a propriedade startDate. Se a propriedade não for especificada, será usado o fuso horário do evento.
startDate Obrigatório Especifica a data para começar a aplicar o padrão. O valor de startDate DEVE corresponder ao valor da data da propriedade iniciar no recurso de evento. Observação: Esta primeira ocorrência da reunião poderá não ocorrer nessa data se ela não se encaixar no padrão.
type Obrigatório Tem que ser definida como noEnd.

Exemplos

  • Repita esse evento de 15 de maio de 2017 para sempre

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

Usando padrões e intervalos para criar eventos recorrentes

Agora que já vimos padrões e intervalos separadamente, vamos analisar como eles funcionam juntos e como eles interagem com as propriedades iniciar e encerrar do evento.

Criando uma regra de recorrência

Para criar uma regra de recorrência, você deve especificar um padrão e um intervalo. Qualquer tipo de padrão pode funcionar com qualquer tipo de intervalo. Eis alguns exemplos.

Exemplos

  • Reunião das 13h às 13h30 toda segunda-feira a partir de 4 de setembro de 2017 até o final do ano

    • O requisito "toda segunda-feira" requisito é atendido facilmente pelo tipo de padrão de recorrência weekly.
    • O requisito "até o final do ano" indica um tipo de intervalo de recorrência endDate.
      "recurrence": {
        "pattern": {
          "type": "weekly",
          "interval": 1,
          "daysOfWeek": [ "Monday" ]
        },
        "range": {
          "type": "endDate",
          "startDate": "2017-09-04",
          "endDate": "2017-12-31"
        }
      }
    

    Como 31 de dezembro de 2017 é um domingo, a última ocorrência dessa série será na segunda-feira, dia 25 de dezembro.

  • Reunião das 14h às 15h na primeira quinta-feira de cada mês a partir de 29 de agosto de 2017

    • O requisito "primeira quinta-feira de cada mês" pode ser cumprido usando um padrão mensal relativo. A parte "cada mês" indica que o intervalo deve ser definido como 2.
    • Por não existir um requisito de data de término, um tipo de intervalo noEnd pode ser usado.
      "recurrence": {
        "pattern": {
          "type": "relativeMonthly",
          "interval": 2,
          "daysOfWeek": [ "Thursday" ],
          "index": "first"
        },
        "range": {
          "type": "noEnd",
          "startDate": "2017-08-29"
        }
      }
    

    Como o valor de starDate é após a primeira quinta-feira de agosto, a primeira ocorrência dessa série será em setembro.