Skip to content

Instantly share code, notes, and snippets.

@veeral-patel
Created February 26, 2024 18:58
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save veeral-patel/d591dea62dd828ef32b202ef5238ae13 to your computer and use it in GitHub Desktop.
Save veeral-patel/d591dea62dd828ef32b202ef5238ae13 to your computer and use it in GitHub Desktop.
Google_Calendar_Syncer
from google.oauth2.service_account import Credentials
from googleapiclient.discovery import build
import datetime
# Setup the service account credentials
SCOPES = ['https://www.googleapis.com/auth/spreadsheets.readonly',
'https://www.googleapis.com/auth/calendar']
SERVICE_ACCOUNT_FILE = 'path/to/your/service-account-file.json'
credentials = Credentials.from_service_account_file(
SERVICE_ACCOUNT_FILE, scopes=SCOPES)
# Initialize the service for Sheets and Calendar
service_sheets = build('sheets', 'v4', credentials=credentials)
service_calendar = build('calendar', 'v3', credentials=credentials)
# Define your Sheet and Calendar details
SHEET_ID = 'YOUR_SHEET_ID'
RANGE_NAME = 'YOUR_RANGE_NAME'
CALENDAR_ID = 'YOUR_CALENDAR_ID'
def clear_calendar():
"""Deletes all events from the specified calendar."""
events_result = service_calendar.events().list(calendarId=CALENDAR_ID).execute()
events = events_result.get('items', [])
if not events:
print('No upcoming events found.')
for event in events:
service_calendar.events().delete(calendarId=CALENDAR_ID, eventId=event['id']).execute()
def insert_events_from_sheet():
"""Inserts events into the calendar from the sheet."""
sheet = service_sheets.spreadsheets()
result = sheet.values().get(spreadsheetId=SHEET_ID,
range=RANGE_NAME).execute()
values = result.get('values', [])
if not values:
print('No data found.')
else:
for row in values:
# Assuming the sheet has columns: Event Name, Start Date, End Date
event_name, start_date, end_date = row
event = {
'summary': event_name,
'start': {
'dateTime': start_date,
'timeZone': 'Your/Timezone',
},
'end': {
'dateTime': end_date,
'timeZone': 'Your/Timezone',
},
}
inserted_event = service_calendar.events().insert(calendarId=CALENDAR_ID, body=event).execute()
print('Event created: %s' % (inserted_event.get('htmlLink')))
if __name__ == '__main__':
clear_calendar()
insert_events_from_sheet()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment