from __future__ import print_function import datetime import pickle import os.path from googleapiclient.discovery import build from google_auth_oauthlib.flow import InstalledAppFlow from google.auth.transport.requests import Request # If modifying these scopes, delete the file token.pickle. SCOPES = ['https://www.googleapis.com/auth/calendar.readonly'] def calendarCredentials(): creds = None # The file token.pickle stores the user's access and refresh tokens, and is # created automatically when the authorization flow completes for the first # time. if os.path.exists('token.pickle'): with open('token.pickle', 'rb') as token: creds = pickle.load(token) # If there are no (valid) credentials available, let the user log in. if not creds or not creds.valid: if creds and creds.expired and creds.refresh_token: creds.refresh(Request()) else: flow = InstalledAppFlow.from_client_secrets_file( 'credentials.json', SCOPES) creds = flow.run_local_server(port=0) # Save the credentials for the next run with open('token.pickle', 'wb') as token: pickle.dump(creds, token) service = build('calendar', 'v3', credentials=creds) return service def getCalendarEvents(service, startDate, endDate): page_token = None calendar_ids = [] while True: calendar_list = service.calendarList().list(pageToken=page_token).execute() for calendar_list_entry in calendar_list['items']: print(calendar_list_entry['colorId']) calendar_ids.append(calendar_list_entry['id']) page_token = calendar_list.get('nextPageToken') if not page_token: break all_events = [] for calendar in calendar_ids: events_result = service.events().list(calendarId=calendar, timeMin=startDate, timeMax=endDate, maxResults=10, singleEvents=True, orderBy='startTime').execute() all_events.append(events_result.get('items', [])) return all_events def main(): service = calendarCredentials() # Call the Calendar API now = datetime.datetime.now() now = now.replace(hour=00, minute=00) today = now.isoformat() + 'Z' # 'Z' indicates UTC time # one_day = datetime.timedelta(days=1) tomorrow = (now.replace(hour=23, minute=59, second=59)).isoformat() + 'Z' all_events = getCalendarEvents(service, today, tomorrow) # if not events: # print('No upcoming events found.') for event_list in all_events: for event in event_list: start = event['start'].get('dateTime') color = event.get('colorId') end = event['end'].get('dateTime') print(start, " ", end, color, event['summary']) if __name__ == '__main__': main()