Я создал синхронизатор календаря, который работает нормально.
Иногда у него возникают проблемы, и он просто не может удалить событие. Примечание. Все события были созданы с использованием API и одних и тех же учетных данных.
Странно то, что я запрашиваю событие, прежде чем удалить его.
Вот простой код, воспроизводящий проблему:
Error deleting event:
APIError
Code: 404
message: None
error: MainError(additional_data={}, code='ErrorItemNotFound', details=None, inner_error=None, message='The specified object was not found in the store.', target=None)
РЕДАКТИРОВАТЬ: я также больше не могу удалять их через пользовательский интерфейс Outlook
Я создал синхронизатор календаря, который работает нормально. Иногда у него возникают проблемы, и он просто не может удалить событие. [b]Примечание. Все события были созданы с использованием API и одних и тех же учетных данных.[/b] Странно то, что я запрашиваю событие, прежде чем удалить его. Вот простой код, воспроизводящий проблему: [code]async def delete_all_future_events(calendar_id, dry_run=True): # Scopes required for accessing and modifying calendar events scopes = ['https://graph.microsoft.com/.default']
# Define date range for fetching events start_date = datetime.now(pytz.utc) end_date = start_date + timedelta(days=365)
# Format dates correctly for the Graph API in ISO 8601 format start_date_str = start_date.strftime("%Y-%m-%dT%H:%M:%S%z") end_date_str = end_date.strftime("%Y-%m-%dT%H:%M:%S%z")
# Set up request configuration with date range query_params = CalendarViewRequestBuilder.CalendarViewRequestBuilderGetQueryParameters( start_date_time=start_date_str, end_date_time=end_date_str, select=['id', 'subject', 'start', 'end'], top=100, orderby=['start/dateTime ASC'] )
try: # Fetch all events within the next year events_page = await graph_client.users.by_user_id(user_id).calendars.by_calendar_id(calendar_id).calendar_view.get(request_configuration=request_configuration) total_deleted = 0
while True: if hasattr(events_page, 'value') and events_page.value: for event in events_page.value: event_type = event.subject.split("-")[0] if event_type != "Feiertag": event_id = event.id event_subject = event.subject print(f"Attempting to delete event: {event_subject} (ID: {event_id})")
# Call delete function with dry_run option delete_result = await delete_calendar_event(calendar_id, event_id, dry_run=dry_run) if delete_result: total_deleted += 1 print(f"Deleted event: {event_subject} (ID: {event_id})") else: print(f"Failed to delete event: {event_subject} (ID: {event_id})")
if not events_page.odata_next_link: print("No more pages to fetch.") break
# Fetch the next page of events if available events_page = await graph_client.users.by_user_id(user_id).calendars.by_calendar_id(calendar_id).events.with_url(events_page.odata_next_link).get()
except Exception as e: print(f"Error deleting events: {e}")
print(f"Total events deleted: {total_deleted if not dry_run else 0}")
asyncio.run(delete_all_future_events(calendar_id, dry_run=False)) [/code] Ошибка следующая [code]Error deleting event: APIError Code: 404 message: None error: MainError(additional_data={}, code='ErrorItemNotFound', details=None, inner_error=None, message='The specified object was not found in the store.', target=None) [/code] [b]РЕДАКТИРОВАТЬ: я также больше не могу удалять их через пользовательский интерфейс Outlook[/b]