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 oferece suporte a eventos únicos e recorrentes:
- Um evento único representa uma ocorrência única.
- Um evento recorrente define várias ocorrências.
Os eventos também podem ser cronometrados ou de dia inteiro:
- Um evento cronometrado ocorre entre dois pontos específicos no tempo. Os eventos programados
usam os campos
start.dateTime
eend.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
eend.date
para especificar quando eles ocorrem. O campo de fuso horário não tem importância para eventos que duram o dia todo.
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 participantes. 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. Essa agenda é criada automaticamente para cada nova conta de usuário, e o ID dela 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 ou "removida" do usuário. No entanto, ainda é possível compartilhar 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. 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 de um calendário e o fuso horário padrão 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 usá-lo para adicionar e remover calendários existentes da lista de usuários. Você também pode usá-lo para extrair e definir os valores de propriedades de agenda específicas do usuário, como lembretes padrão. Outro exemplo é a cor do 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, por exemplo, título e fuso horário. | Recupera metadados e personalização específica do usuário, como cor ou lembretes de substituição. |
patch /update |
Modifica os metadados da agenda. | Modifica as propriedades da 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 ter horários de início e término diferentes, esses eventos repetidos geralmente são idênticos.
Os eventos são chamados de recorrentes se se repetirem 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 será repetido ao longo do tempo.
O campo de recorrência contém uma matriz de strings que representam uma ou várias
propriedades RRULE
, RDATE
ou EXDATE
, conforme definido no RFC
5545.
A propriedade RRULE
é a mais importante, porque define uma regra regular para
repetir o evento. Ela é composta por vários componentes. Alguns deles são:
FREQ
: a frequência com que o evento precisa ser repetido (por exemplo,DAILY
ouWEEKLY
). Obrigatório.INTERVAL
: funciona comFREQ
para especificar com que frequência o evento precisa ser repetido. Por exemplo,FREQ=DAILY;INTERVAL=2
significa uma vez a cada dois dias.COUNT
: número de vezes que esse evento precisa ser repetido.UNTIL
: a data ou a data e hora até que o evento deve ser repetido (inclusive).BYDAY
: dias da semana em que o evento precisa ser repetido (SU
,MO
,TU
etc.). Outros componentes semelhantes incluemBYMONTH
,BYYEARDAY
eBYHOUR
.
A propriedade RDATE
especifica outras datas ou datas e horas 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 datas e horários
em que o evento não acontece. Ou seja, essas ocorrências precisam 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 datas e horários)
para eventos de dia inteiro.
Cada uma das propriedades pode ocorrer no campo de recorrência várias vezes.
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:
Um evento que ocorre das 6h às 7h todas as terças-feiras e sextas-feiras a partir de 15 de setembro de 2015 e que termina 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" ], …
Um evento de um dia inteiro que começa em 1º de junho de 2015 e se repete a cada três dias ao longo do mês, excluindo 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: suas ocorrências específicas em momentos diferentes. Essas instâncias funcionam como eventos.
As modificações de eventos recorrentes podem afetar todo o evento recorrente (e todas as instâncias dele) ou apenas instâncias individuais. As instâncias que diferem do evento recorrente pai são chamadas de exceções.
Por exemplo, uma exceção pode ter um resumo, um horário de início ou participantes adicionais diferentes, convidados apenas para essa instância. Também é possível cancelar uma
instância sem remover o evento recorrente. Os cancelamentos de instâncias são refletidos no evento
status
.
Confira aqui 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 observa um horário padrão uniforme. Na API Google Agenda, 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 do calendário
O fuso horário do calendário também é conhecido como fuso horário padrão devido
às implicações nos resultados da consulta. O fuso horário do calendário afeta a forma
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()
einstances()
são retornados no fuso horário especificado no parâmetrotimeZone
. Se você omitir esse parâmetro, todos esses métodos usarão o fuso horário padrão do calendário. - Como fazer com que eventos de dia inteiro correspondam a consultas com intervalos de tempo
- Os métodos
list()
einstances()
permitem especificar filtros de início e término, com o método retornando instâncias que se enquadram no intervalo especificado. O fuso horário do calendário é usado para calcular os horários de início e término dos eventos de dia inteiro para 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 término. A especificação desses horários pode incluir o fuso horário. É possível especificar o fuso horário de várias maneiras. As seguintes especificam o mesmo horário:
- Inclua um deslocamento de fuso horário no campo
dateTime
, por exemplo,2017-01-25T09:00:00-0500
. - Especifique o horário sem deslocamento, por exemplo,
2017-01-25T09:00:00
, deixando o campotimeZone
vazio (isso usa implicitamente o fuso horário padrão). - Especifique o horário sem ajuste, por exemplo,
2017-01-25T09:00:00
, mas use o campotimeZone
para especificar o fuso horário.
Também é possível especificar os horários dos eventos em UTC, se preferir:
- Especifique o horário no UTC:
2017-01-25T14:00:00Z
ou use um deslocamento de zero2017-01-25T14:00:00+0000
.
A representação interna do horário do evento é a mesma em todos esses casos,
mas a definição do campo timeZone
anexa um fuso horário ao evento, assim como
quando você define um fuso horário de evento usando a interface
da Agenda:
Fuso horário do evento recorrente
Para eventos recorrentes, é preciso especificar um único fuso horário. Ela é necessária para expandir as recorrências do evento.