From bd048a245b5c5cae3ff0510f448fb5a4f4fe86c3 Mon Sep 17 00:00:00 2001 From: Martin Bauer Date: Thu, 9 Apr 2026 16:29:00 +0200 Subject: [PATCH] pagination fix --- eventplanner_gcal/google_sync.py | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/eventplanner_gcal/google_sync.py b/eventplanner_gcal/google_sync.py index 46f6e10..59f6487 100644 --- a/eventplanner_gcal/google_sync.py +++ b/eventplanner_gcal/google_sync.py @@ -230,6 +230,7 @@ def get_all_gcal_events(service, from_now=False): Retrieves all gcal events with custom property blechreizEvent=True. These are all events that have been created by this script. + Handles pagination so all events are returned regardless of count. """ if from_now: now = datetime.datetime.now() @@ -237,21 +238,32 @@ def get_all_gcal_events(service, from_now=False): else: min_time = "2000-01-01T00:00:00-00:00" + all_items = [] + page_token = None + try: - events = ( - service.events() - .list( + while True: + kwargs = dict( calendarId="primary", singleEvents=True, - maxResults=1000, + maxResults=250, # max allowed per page by the API orderBy="startTime", timeMin=min_time, timeMax="2100-01-01T00:00:00-00:00", privateExtendedProperty="blechreizEvent=true", ) - .execute() - ) - return events.get("items", []) + if page_token: + kwargs["pageToken"] = page_token + + response = service.events().list(**kwargs).execute() + all_items.extend(response.get("items", [])) + + page_token = response.get("nextPageToken") + if not page_token: + break + + logger.info(f"Fetched {len(all_items)} GCal events (all pages)") + return all_items except Exception as e: logger.error(f"Failed to retrieve GCal events: {e}") return []