Ir para o conteúdo

Google - Agenda

Interaja e execute várias operações por meio de uma conta do Google. Obtenha eventos, crie eventos, atualize eventos, exclua eventos e muito mais.

Instalação

pip install botcity-googlecalendar-plugin

Importando o plugin

Depois de instalar este pacote e obter o arquivo Google credenciais, o próximo passo é importar o pacote para o seu código e começar a usar as funções.

from botcity.plugins.googlecalendar import BotGoogleCalendarPlugin

Configurando Google Agenda

Primeiro, vamos instanciar o plugin e definir o calendário que será usado. Por padrão, usaremos o calendário principal, identificado como "primário". Para usar um calendário diferente, você precisa especificar seu ID. Vá para as configurações e compartilhamento -> integrar agenda -> ID da agenda.

# Defina o caminho do arquivo JSON de credenciais
credenciais = "recursos/credenciais.json"

# Instancie o plugin
googleCalendar = BotGoogleCalendarPlugin(credenciais)

Obtendo alguns eventos

Com o plugin configurado, vamos procurar alguns eventos e acessar algumas informações.

# Obtenha os próximos eventos do calendário
eventos = googleCalendar.get_events()

# Para cada evento: imprime os participantes, descrição e data de início.
for ev in eventos:
    print(ev.attendees)
    print(ev.description)
    print(ev.start)

Usando apenas get events método vamos obter os eventos que ainda não aconteceram. Para retornar eventos antigos ou retornar eventos até uma data específica, podemos usar as informações dos parâmetros date min e date max como um filtro.

from datetime import datetime

# Datas que serão usadas como referência para retornar eventos
primeira_data = datetime(2022, 4, 10)
ultima_data = datetime(2022, 5, 10)

# Somente eventos que estão entre 10/04/2022 e 10/05/2022 serão considerados
events = googlecalendar.get_events(date_min=primeira_data, date_max=ultima_data)

# Para cada evento: imprime o criador, resumo e data de término.
for ev in eventos:
    print(ev.creator)
    print(ev.summary)
    print(ev.end)

Criando eventos únicos

Agora, vamos criar um novo evento simples com algumas informações básicas.

from datetime import datetime

# Criando um evento de 4 horas a partir de 05/12/2022 às 10h.
googlecalendar.create_event(
    title="Evento de teste",
    Descrição="Meu evento",
    start_date=datetime(2022, 5, 12, 10),
    end_date=datetime(2022, 5, 12, 14)
)

# Criando um evento a partir de 20/5/2022 às 18h e contendo dois participantes.
# Como data de término, o evento durará 1 hora por padrão.
googlecalendar.create_event(
    title="Evento de teste 2",
    Descrição="Meu segundo evento",
    start_date=datetime(2022, 5, 20, 18),
    participantes=["participante_1@gmail.com", "participante_2@gmail.com"]
)

Criando eventos recorrentes

Também podemos criar eventos que se repetem por um período de tempo. Para definir uma recorrência, você pode selecionar um valor definido como um Enum na classe EventRecurrence. Basta usar EventRecurrence.PERIOD para selecionar um período de tempo.

from datetime import datetime
from botcity.plugins.googlecalendar import BotGoogleCalendarPlugin, EventRecurrence

# Criando um evento que repete diariamente a partir de 5/8/2022 até 14/5/2022
googlecalendar.create_recurring_event(
    title="Evento recorrente",
    Descrição="Este evento é repetido diariamente",
    start_date=datetime(2022, 5, 8, 10),
    Recorrência=EventRecurrence.DAILY,
    recorrência_until_date=datetime(2022, 5, 14)
)

Também é possível criar eventos recorrentes em dias específicos.Você pode usar os valores definidos como um Enum na classe EventDays. Basta usar EventDays.DAY para selecionar um dia específico da semana.

from datetime import datetime
from botcity.plugins.googlecalendar import BotGoogleCalendarPlugin, EventRecurrence, EventDays

# Criando um evento a cada duas sextas -feiras
googlecalendar.create_recurring_event(
    title ="Evento de sexta -feira",
    Descrição="Este evento é repetido a cada 2 sextas -feiras",
    start_date=datetime(2022, 5, 13, 10),
    Recorrência=EventRecurrence.DAILY,
    recorrência_freq=2,
    recorrência_days=[EventDays.FRIDAY]
)