Google Calendar MCP Server

by amornpan
Verified
import asyncio import os from calendar_service import CalendarService from datetime import datetime, timedelta async def list_past_events(): # กำหนด path current_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) credentials_path = os.path.join(current_dir, "credentials", "credentials.json") token_path = os.path.join(current_dir, "credentials", "token.json") # สร้าง instance ของ CalendarService service = CalendarService(credentials_path, token_path) try: # สร้าง service และ authenticate await service.authenticate() # กำหนดช่วงเวลา now = datetime.utcnow() # ดึงกิจกรรม 10 ปีย้อนหลัง (สามารถปรับจำนวนปีได้) ten_years_ago = now - timedelta(days=365*10) print(f"Fetching all past events from {ten_years_ago.date()} to {now.date()}") # ใช้ run_in_executor เพื่อเรียก API แบบ async events_result = await asyncio.get_event_loop().run_in_executor( None, lambda: service.service.events().list( calendarId='primary', timeMin=ten_years_ago.isoformat() + 'Z', timeMax=now.isoformat() + 'Z', maxResults=2500, # ดึงข้อมูลสูงสุด singleEvents=True, orderBy='startTime' ).execute() ) events = events_result.get('items', []) print(f"Found {len(events)} past events") # แสดงผล if not events: print("No past events found.") return for event in events: start = event['start'].get('dateTime', event['start'].get('date')) summary = event.get('summary', 'No title') print(f"{start} - {summary}") except Exception as e: print(f"Error: {str(e)}") finally: service.close() if __name__ == "__main__": asyncio.run(list_past_events())