Agendas e eventos

Este guia descreve agendas, eventos e a relação entre eles.

Agendas

Uma agenda é uma coleção de eventos relacionados, além de outros metadados, como resumo, fuso horário padrão, local etc. Cada agenda é identificada por um ID, que é um endereço de e-mail. As agendas podem ter vários proprietários.

Eventos

Um evento é um objeto associado a um período ou data específica. Os eventos são identificados por um ID exclusivo. Além de uma data e hora de início e término, os eventos contêm outros dados, como resumo, descrição, local, status, lembretes, anexos etc.

Tipos de evento

O Google Agenda é compatível com eventos únicos e recorrentes:

  • Um evento único representa uma ocorrência exclusiva.
  • Um evento recorrente define várias ocorrências.

Os eventos também podem ser com horário ou de dia inteiro:

  • Um evento cronometrado ocorre entre dois pontos específicos no tempo. Os eventos com tempo usam os campos start.dateTime e end.dateTime para especificar quando eles ocorrem.
  • Um evento de dia inteiro dura um dia inteiro ou uma série de dias consecutivos. Os eventos de dia inteiro usam os campos start.date e end.date para especificar quando eles ocorrem. O campo de fuso horário não tem significado para eventos de dia inteiro.

Organizadores

Os eventos têm um único organizador, que é a agenda que contém a cópia principal do evento. Os eventos também podem ter vários convidados. Um participante geralmente é a agenda principal de um usuário convidado.

O diagrama a seguir mostra a relação conceitual entre calendários, eventos e outros elementos relacionados:

Agendas principais e outras agendas

Uma agenda principal é um tipo especial de agenda associada a uma única conta de usuário. Ela é criada automaticamente para cada nova conta de usuário, e o ID geralmente corresponde ao endereço de e-mail principal do usuário. Enquanto a conta existir, a agenda principal não poderá ser excluída nem "desvinculada" do usuário. No entanto, ele ainda pode ser compartilhado com outros usuários.

Além da agenda principal, você pode criar explicitamente qualquer número de outras agendas, que podem ser modificadas, excluídas e compartilhadas entre vários usuários.

Agenda e lista de agendas

A coleção Calendars representa todas as agendas atuais. Ele pode ser usado para criar e excluir calendários. Também é possível recuperar ou definir propriedades globais compartilhadas entre todos os usuários com acesso a uma agenda. Por exemplo, o título e o fuso horário padrão de um calendário são propriedades globais.

A CalendarList é uma coleção de todas as entradas de agenda que um usuário adicionou à lista (mostrada no painel esquerdo da interface da Web). Você pode usar essa ferramenta para adicionar e remover calendários da lista de usuários. Você também pode usar esse método para recuperar e definir os valores de propriedades específicas do usuário, como lembretes padrão. Outro exemplo é a cor de primeiro plano, já que usuários diferentes podem ter cores diferentes definidas para a mesma agenda.

A tabela a seguir compara o significado das operações para as duas coleções:

Operação Agendas CalendarList
insert Cria uma agenda secundária. Por padrão, essa agenda também é adicionada à lista de agendas do criador de conteúdo. Insere uma agenda na lista do usuário.
delete Exclui uma agenda secundária. Remove uma agenda da lista do usuário.
get Recupera metadados da agenda, como título e fuso horário. Recupera metadados e personalizações específicas do usuário, como cor ou substituição de lembretes.
patch/update Modifica os metadados da agenda. Modifica propriedades de agenda específicas do usuário.

Eventos recorrentes

Alguns eventos ocorrem várias vezes em uma programação regular, como reuniões semanais, aniversários e feriados. Além de terem horários de início e término diferentes, esses eventos repetidos costumam ser idênticos.

Os eventos são chamados de recorrentes se forem repetidos de acordo com uma programação definida. Os eventos únicos não são recorrentes e acontecem apenas uma vez.

Regra de recorrência

A programação de um evento recorrente é definida em duas partes:

  • Os campos de início e término (que definem a primeira ocorrência, como se fosse apenas um evento único independente) e

  • O campo de recorrência (que define como o evento deve ser repetido ao longo do tempo).

O campo "recurrence" contém uma matriz de strings que representam uma ou várias propriedades RRULE, RDATE ou EXDATE, conforme definido na RFC 5545.

A propriedade RRULE é a mais importante, porque define uma regra regular para repetir o evento. Ele é composto de vários componentes. Alguns exemplos:

  • FREQ: a frequência com que o evento deve ser repetido (como DAILY ou WEEKLY). Obrigatório.

  • INTERVAL: funciona com FREQ para especificar com que frequência o evento deve ser repetido. Por exemplo, FREQ=DAILY;INTERVAL=2 significa uma vez a cada dois dias.

  • COUNT: número de vezes que esse evento deve ser repetido.

  • UNTIL: a data ou data e hora até quando o evento deve ser repetido (inclusive).

  • BYDAY: dias da semana em que o evento deve ser repetido (SU, MO, TU etc.). Outros componentes semelhantes incluem BYMONTH, BYYEARDAY e BYHOUR.

A propriedade RDATE especifica outras datas ou data/hora em que as ocorrências do evento devem acontecer. Por exemplo, RDATE;VALUE=DATE:19970101,19970120. Use isso para adicionar ocorrências extras não cobertas pelo RRULE.

A propriedade EXDATE é semelhante a RDATE, mas especifica datas ou data/hora em que o evento não deve acontecer. Ou seja, essas ocorrências devem ser excluídas. Ele precisa apontar para uma instância válida gerada pela regra de recorrência.

EXDATE e RDATE podem ter um fuso horário e precisam ser datas (não data-hora) para eventos de dia inteiro.

Cada uma das propriedades pode aparecer várias vezes no campo de recorrência. A recorrência é definida como a união de todas as regras RRULE e RDATE, menos as excluídas por todas as regras EXDATE.

Confira alguns exemplos de eventos recorrentes:

  1. Um evento que acontece das 6h às 7h todas as terças e sextas-feiras, começando em 15 de setembro de 2015 e terminando após a quinta ocorrência em 29 de setembro:

    ...
    "start": {
     "dateTime": "2015-09-15T06:00:00+02:00",
     "timeZone": "Europe/Zurich"
    },
    "end": {
     "dateTime": "2015-09-15T07:00:00+02:00",
     "timeZone": "Europe/Zurich"
    },
    "recurrence": [
     "RRULE:FREQ=WEEKLY;COUNT=5;BYDAY=TU,FR"
    ],
    
    
  2. Um evento de dia inteiro que começa em 1º de junho de 2015 e se repete a cada 3 dias durante todo o mês, exceto 10 de junho, mas incluindo 9 e 11 de junho:

    ...
    "start": {
     "date": "2015-06-01"
    },
    "end": {
     "date": "2015-06-02"
    },
    "recurrence": [
     "EXDATE;VALUE=DATE:20150610",
     "RDATE;VALUE=DATE:20150609,20150611",
     "RRULE:FREQ=DAILY;UNTIL=20150628;INTERVAL=3"
    ],
    
    

Instâncias e exceções

Um evento recorrente consiste em várias instâncias: as ocorrências específicas em momentos diferentes. Essas instâncias agem como eventos.

As modificações em eventos recorrentes podem afetar o evento recorrente inteiro (e todas as instâncias dele) ou apenas instâncias individuais. As instâncias que diferem do evento recorrente principal são chamadas de exceções.

Por exemplo, uma exceção pode ter um resumo e um horário de início diferentes ou mais convidados que só vão a essa instância. Também é possível cancelar uma instância sem remover o evento recorrente (os cancelamentos de instância são refletidos no evento status).

Aqui você encontra exemplos de como trabalhar com eventos e instâncias recorrentes usando a API Google Agenda.

Fusos horários

Um fuso horário especifica uma região que segue um horário padrão uniforme. Na API Google Calendar, você especifica fusos horários usando identificadores de fuso horário da IANA.

É possível definir o fuso horário para agendas e eventos. As seções a seguir descrevem os efeitos dessas configurações.

Fuso horário da Agenda

O fuso horário da agenda também é conhecido como fuso horário padrão devido às implicações para os resultados da consulta. O fuso horário do calendário afeta a maneira como os valores de tempo são interpretados ou apresentados pelos métodos events.get(), events.list() e events.instances().

Conversão de fuso horário do resultado da consulta
Os resultados dos métodos get(), list() e instances() são retornados no fuso horário especificado no parâmetro timeZone. Se você omitir esse parâmetro, todos esses métodos usarão o fuso horário do calendário como padrão.
Correspondência de eventos de dia inteiro com consultas entre colchetes de tempo
Os métodos list() e instances() permitem especificar filtros de horário de início e término, com o método retornando instâncias que se enquadram no intervalo especificado. O fuso horário da agenda é usado para calcular os horários de início e término dos eventos de dia inteiro e determinar se eles estão dentro da especificação do filtro.

Fuso horário do evento

As instâncias de eventos têm um horário de início e de término, e a especificação desses horários pode incluir o fuso horário. É possível especificar o fuso horário de várias maneiras. Todas as opções a seguir especificam o mesmo horário:

  • Inclua um deslocamento de fuso horário no campo dateTime, por exemplo, 2017-01-25T09:00:00-0500.
  • Especifique a hora sem ajuste, por exemplo, 2017-01-25T09:00:00, deixando o campo timeZone vazio. Isso usa implicitamente o fuso horário padrão.
  • Especifique a hora sem ajuste, por exemplo, 2017-01-25T09:00:00, mas use o campo timeZone para especificar o fuso horário.

Se preferir, também é possível especificar os horários dos eventos em UTC:

  • Especifique o horário em UTC: 2017-01-25T14:00:00Z ou use um deslocamento zero 2017-01-25T14:00:00+0000.

A representação interna da hora do evento é a mesma em todos esses casos, mas definir o campo timeZone anexa um fuso horário ao evento, assim como quando você define um fuso horário do evento usando a interface do Calendar:

Fragmento de captura de tela mostrando o fuso horário em um evento

Fuso horário do evento recorrente

Para eventos recorrentes, sempre especifique um único fuso horário. É necessário para expandir as recorrências do evento.