def delete_events(service: Resource, calendar: List[Dict], events: List[Dict]) -> None: print(f"Deleting events in calendar: {calendar['summary']}") for event in events: service.events().delete(calendarId=calendar["id"], eventId=event["id"]).execute() start = event["start"].get("dateTime", event["start"].get("date")) print(f"Deleted: ({start}) - {event.get('summary')}") print(f"Finished deleting events in calendar: {calendar['summary']}\n")
def clear_calendar(service: Resource, calendar_id: str) -> None: """Clears calendar.""" events = (service.events().list(calendarId=calendar_id, singleEvents=True).execute()) batch = service.new_batch_http_request() # Add delete call for each event to batch for event in events["items"]: eId = event["id"] batch.add(service.events().delete(calendarId=calendar_id, eventId=eId)) batch.execute()
def get_old_events(service: Resource, calendar_id: str) -> List[Dict]: one_month_ago = get_time_n_days_ago( 30).isoformat() + "Z" # 'Z' indicates UTC time events = [] request = service.events().list( calendarId=calendar_id, timeMax=one_month_ago, singleEvents=True, orderBy="startTime", ) while request is not None: events_result = request.execute() events.extend(events_result.get("items", [])) request = service.events().list_next(request, events_result) return events
def insert_event(events: List[str], service: Resource, calendar_id: str) -> None: """Add events to calendar.""" batch = service.new_batch_http_request() # Add each event to batch for i, event in enumerate(events): batch.add(service.events().insert(calendarId=calendar_id, body=event)) batch.execute()
def fetch_targat_day_events(service: Resource, target_datetime: datetime.datetime) -> Events: target_date = target_datetime.date() start = (datetime.datetime(target_date.year, target_date.month, target_date.day).isoformat() + "Z") end = (datetime.datetime(target_date.year, target_date.month, target_date.day + 1).isoformat() + "Z") events_result = (service.events().list( calendarId="primary", timeMin=start, timeMax=end, maxResults=20, singleEvents=True, orderBy="startTime", ).execute()) events = events_result.get("items", []) return Events(events)