Google Calendar API con Python

Google Calendar API con Python | NelsonCode

Dependencies

pip3 install google-api-python-client google-auth-httplib2 google-auth-oauthlib

Credentials of Google Cloud in JSON

{
"web": {
"client_id": "",
"project_id": "",
"auth_uri": "",
"token_uri": "",
"auth_provider_x509_cert_url": "",
"client_secret": "",
"redirect_uris": ["http://localhost/"]
}
}

Create Service

This allows us to interact with all Google APIs, in this case Calendar

from os import path
import pickle
from google.auth.transport.requests import Request
from google_auth_oauthlib.flow import InstalledAppFlow
from googleapiclient.discovery import build
# IF YOU MODIFY THE SCOPE DELETE THE TOKEN.TXT FILE
SCOPES = ['https://www.googleapis.com/auth/calendar.events',
'https://www.googleapis.com/auth/calendar']
# THE TOKEN.TXT FILE STORES UPDATE AND USER ACCESS TOKENSdef get_crendetials_google():
# OPEN THE BROWSER TO AUTHORIZE
flow = InstalledAppFlow.from_client_secrets_file("creds.json", SCOPES)
creds = flow.run_local_server(port=0)
# WE SAVE THE CREDENTIALS
pickle.dump(creds, open("token.txt", "wb"))
return creds
def get_calendar_service():
creds = None
if path.exists("token.txt"):
creds = pickle.load(open("token.txt", "rb"))
# IF IT EXPIRED, WE REFRESH THE CREDENTIALS
if not creds or not creds.valid:
if creds and creds.expired and creds.refresh_token:
creds.refresh(Request())
else:
creds = get_crendetials_google()
service = build("calendar", "v3", credentials=creds) return service

Template

{
"summary": "Important event!",
"location": "Virtual event (Slack)",
"description": "This a description",
"start": {
"dateTime": "2021-12-10T10:00:00",
"timeZone": "America/El_Salvador"
},
"end": {
"dateTime": "2021-12-10T11:00:00",
"timeZone": "America/El_Salvador"
},
"attendees": [{ "email": "email@gmail.com" }],
"reminders": {
"useDefault": false,
"overrides": [
{ "method": "email", "minutes": 30 },
{ "method": "popup", "minutes": 10 }
]
}
}

Create Event

service = get_calendar_service()def create_event(template: dict):
try:
response = service.events().insert(calendarId="primary", body=template).execute()
return response
except Exception as e:
return e.message

Get Event

def get_event(eventId: str):
try:
response = service.events().get(calendarId="primary", eventId=eventId).execute()
return response
except Exception as e:
return e.message

Update Event

def update_event(eventId: str, template: dict):
try:
response = service.events().update(calendarId='primary',
eventId=eventId, body=template).execute()
return response
except Exception as e:
return e.message

Delete Event

def delete_event(eventId: str):
try:
response = service.events().delete(calendarId="primary", eventId=eventId).execute()
return response
except Exception as e:
return e.message

--

--

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store