I can help, but I don’t have direct access to your calendar. I can either give step‑by‑step export instructions for your calendar service (Google Calendar, Apple/iCloud, Outlook/Microsoft 365, etc.), or if you can first export and upload an .ics/.csv file I can filter and convert it for you for the date range 2020‑01‑09 → 2025‑04‑09.

Before I give instructions I need two clarifications:

  1. Which calendar service(s) do you want exported? (Google Calendar, iCloud/Apple Calendar, Outlook/Exchange/Office 365, or something else)
  2. Do you want the full event details (title, start/end, description, attendees, location, reminders, attachments) and in what output format (CSV, JSON, ICS)?

Also: you included “Student Age: 13-year-old.” If the calendar belongs to a minor, please confirm you have parental/guardian permission to export and share the data.

Below are common options and quick instructions so you can get a full export and/or I can help process it.

A. Quick exports (no date range built into most UIs)

  • Google Calendar (web):
    • Settings (gear) → Settings → Import & export → Export. This downloads a .zip of .ics files (one per calendar). The web UI export is whole-calendar, not range-limited.
  • Apple Calendar (macOS):
    • File → Export → Export… → save .ics for a selected calendar. Exports whole calendar.
  • Outlook (desktop):
    • File → Open & Export → Import/Export → Export to a file → choose CSV or ICS. (CSV export lets you choose fields; ICS exports whole calendar.)

Because most built-in exports are whole-calendar, to get only events in a specific date range you can either:

  • Use the calendar API (Google Calendar API or Microsoft Graph) to request events between two timestamps (recommended if you want precise range and recurring events expanded), or
  • Export the full .ics and run a script to filter events to your date range.

B. Recommended: Google Calendar API (example) If you use Google Calendar, the API can return all event instances in a date range (including expanded recurring instances). Steps:

  1. Enable Calendar API in Google Cloud Console and create OAuth credentials.
  2. Install python libraries: pip install --upgrade google-api-python-client google-auth-httplib2 google-auth-oauthlib
  3. Run a script that lists events between the two dates and writes CSV/JSON.

Example Python (Google Calendar API) — replace date range and follow OAuth flow:

from google.oauth2 import credentials
from google_auth_oauthlib.flow import InstalledAppFlow
from googleapiclient.discovery import build
import csv
import datetime

SCOPES = ['https://www.googleapis.com/auth/calendar.readonly']
flow = InstalledAppFlow.from_client_secrets_file('credentials.json', SCOPES)
creds = flow.run_local_server(port=0)
service = build('calendar', 'v3', credentials=creds)

time_min = '2020-01-09T00:00:00Z'
time_max = '2025-04-09T23:59:59Z'

events = []
page_token = None
while True:
    resp = service.events().list(
        calendarId='primary',
        timeMin=time_min,
        timeMax=time_max,
        singleEvents=True,
        orderBy='startTime',
        pageToken=page_token
    ).execute()
    events.extend(resp.get('items', []))
    page_token = resp.get('nextPageToken')
    if not page_token:
        break

with open('calendar_export.csv','w',newline='',encoding='utf-8') as f:
    writer = csv.writer(f)
    writer.writerow(['id','start','end','summary','description','location','attendees'])
    for e in events:
        start = e.get('start',{}).get('dateTime') or e.get('start',{}).get('date')
        end = e.get('end',{}).get('dateTime') or e.get('end',{}).get('date')
        attendees = ';'.join([a.get('email','') for a in e.get('attendees',[])]) if e.get('attendees') else ''
        writer.writerow([e.get('id'), start, end, e.get('summary',''), e.get('description',''), e.get('location',''), attendees])

This outputs a CSV with expanded recurring instances and full date-range filtering.

C. If you only have an .ics file: filter by date range with a script

  • Export .ics from your calendar UI, then run a Python script to extract events whose start is inside your range. (Note: expanding complex recurring rules is more involved; APIs like Google’s will expand occurrences for you.)

Example Python using icalendar (simple non-recurring events):

pip install icalendar pytz
from icalendar import Calendar
from datetime import datetime
import pytz
import csv

start_range = datetime(2020,1,9,tzinfo=pytz.UTC)
end_range   = datetime(2025,4,9,23,59,59,tzinfo=pytz.UTC)

with open('calendar.ics','rb') as f:
    cal = Calendar.from_ical(f.read())

rows = []
for comp in cal.walk():
    if comp.name == "VEVENT":
        dtstart = comp.get('dtstart').dt
        dtend = comp.get('dtend').dt if comp.get('dtend') else None
        # ensure timezone-aware datetimes or normalize to UTC as needed
        if hasattr(dtstart, 'tzinfo') and dtstart.tzinfo is None:
            dtstart = dtstart.replace(tzinfo=pytz.UTC)
        if start_range <= dtstart <= end_range:
            rows.append({
                'summary': str(comp.get('summary')),
                'start': dtstart.isoformat(),
                'end': dtend.isoformat() if dtend else '',
                'description': str(comp.get('description') or ''),
                'location': str(comp.get('location') or '')
            })

with open('filtered_events.csv','w',newline='',encoding='utf-8') as f:
    writer = csv.DictWriter(f, fieldnames=['summary','start','end','description','location'])
    writer.writeheader()
    writer.writerows(rows)

Note: this simple script does not expand recurring rules (RRULE). For recurrence expansion use a library that supports RRULE expansion (dateutil.rrule or use the Google API to get instances).

D. Outlook / Microsoft Graph

  • Microsoft Graph API can fetch calendarView for a given time window which expands recurring events. Use the /me/calendarview?startDateTime=...&endDateTime=... endpoint with authentication. Or export via Outlook and filter using the .ics/CSV scripts above.

What I can do for you now

  • Tell me which calendar service you use and which output format you prefer (CSV/JSON/ICS). I’ll give the exact step-by-step for exporting that service and either:
    • provide the exact script you can run, or
    • you can upload the exported .ics/.csv and I will filter and return a CSV/JSON of all events between 2020‑01‑09 and 2025‑04‑09.

Reminder about the student age: confirm you have permission to export this calendar if it belongs to a 13-year-old.

Which option do you want to proceed with?

Get started now with this premium tool

Sign In