Saltar a contenido

Google - Calendario

Interactúa y realiza diversas operaciones a través de una cuenta de Google. Obtén eventos, crea eventos, actualiza eventos, elimina eventos y más.

Instalación

pip install botcity-googlecalendar-plugin

Importando el Plugin

Después de instalar este paquete y obtener el archivo de credenciales de Google, el siguiente paso es importar el paquete en tu código y comenzar a usar las funciones.

from botcity.plugins.googlecalendar import BotGoogleCalendarPlugin

Configurando el Calendario de Google

Primero, instanciemos el plugin y definamos el calendario que se utilizará. Por defecto, utilizaremos el calendario principal, identificado como "primary". Para utilizar un calendario diferente, debes especificar su ID. Ve a configuración y uso compartido del calendario -> Integrar calendario -> ID del calendario.

# Set the path of the credentials json file
credentials = "resources/credentials.json"

# Instantiate the plugin
googlecalendar = BotGoogleCalendarPlugin(credentials)

Obteniendo algunos eventos

Con el plugin configurado, busquemos algunos eventos y accedamos a alguna información.

# Get upcoming calendar events
events = googlecalendar.get_events()

# For each event: prints the participants, description and start date.
for ev in events:
    print(ev.attendees)
    print(ev.description)
    print(ev.start)

Usando solo el método get events, obtendremos los eventos que aún no han ocurrido. Para devolver eventos antiguos o eventos hasta una fecha específica, podemos utilizar la información de los parámetros date min y date max como filtro.

from datetime import datetime

# Dates that will be used as a reference to return events
first_date = datetime(2022, 4, 10)
last_date = datetime(2022, 5, 10)

# Only events that are between 10/04/2022 and 10/05/2022 will be considered
events = googlecalendar.get_events(date_min=first_date, date_max=last_date)

# For each event: prints the creator, summary and end date.
for ev in events:
    print(ev.creator)
    print(ev.summary)
    print(ev.end)

Creando eventos individuales

Ahora, creemos un nuevo evento simple con alguna información básica.

from datetime import datetime

# Creating a 4-hour event starting on 12/5/2022 at 10 am.
googlecalendar.create_event(
    title = "Test Event",
    description = "My event",
    start_date = datetime(2022, 5, 12, 10),
    end_date = datetime(2022, 5, 12, 14)
)

# Creating a event starting on 20/5/2022 at 18 am and containing two participants.
# As an end date was not provided, the event will last for 1 hour by default.
googlecalendar.create_event(
    title = "Test Event 2",
    description = "My second event",
    start_date = datetime(2022, 5, 20, 18),
    attendees = ["participant_1@gmail.com", "participant_2@gmail.com"]
)

Creando eventos recurrentes

También podemos crear eventos que se repiten durante un período de tiempo. Para definir una recurrencia, puedes seleccionar un valor definido como un Enum en la clase EventRecurrence. Simplemente usa EventRecurrence.PERIOD para seleccionar un período de tiempo.

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

# Creating an event that repeats daily starting 8/5/2022 until 14/5/2022
googlecalendar.create_recurring_event(
    title = "Recurring event",
    description = "This event is repeated daily",
    start_date = datetime(2022, 5, 8, 10),
    recurrence= EventRecurrence.DAILY,
    recurrence_until_date=datetime(2022, 5, 14)
)

También es posible crear eventos recurrentes en días específicos. Puedes utilizar los valores definidos como un Enum en la clase EventDays. Simplemente usa EventDays.DAY para seleccionar un día específico de la semana.

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

# Creating an event every two Fridays
googlecalendar.create_recurring_event(
    title = "Friday event",
    description = "This event is repeated every 2 Fridays",
    start_date = datetime(2022, 5, 13, 10),
    recurrence= EventRecurrence.DAILY,
    recurrence_freq=2,
    recurrence_days=[EventDays.FRIDAY]
)