Пытаюсь сделать приложение для чтения событий из общего календаря Outlook. Я использую Python 3.8.0 на win10. Вот моя функция для этого.
def getSharedCalendarEntries(TS_name, days=1000): #TS_name is name of shared calendar
MailboxToAccess = '[email protected]'
Outlook = win32com.client.Dispatch("Outlook.Application")
namespace = Outlook.GetNamespace("MAPI")
recipient = namespace.createRecipient(MailboxToAccess)
resolved = recipient.Resolve()
sharedCalendar = namespace.GetSharedDefaultFolder(recipient, 9).Folders(TS_name).Items
sharedCalendar.Sort("[Start]")
sharedCalendar.IncludeRecurrences = 'True'
today = datetime.datetime(2019,1,1)
begin = today.date().strftime('%d/%m/%Y')
tomorrow = datetime.timedelta(days=days)+today
end = tomorrow.date().strftime('%d/%m/%Y')
sharedCalendar = sharedCalendar.Restrict("[Start] >= '" +begin+ "' AND [END] <= '" +end+ "'")
events = {'Start':[],'End':[],'Subject':[],'Duration':[]}
mEv = []
for app in sharedCalendar: #petla po rezerwacjach
adate = datetime.datetime(app.Start.year, app.Start.month, app.Start.day).date()
events['Start'].append(adate)
aend = datetime.datetime(app.End.year, app.End.month, app.End.day).date()
events['End'].append(aend)
events['Duration'].append(int(app.Duration/1440))
events['Subject'].append(app.Subject)
mEvent = Event(adate, aend, int(app.Duration/1440), app.Subject)
mEv.append(mEvent)
return mEv
Все работало и я мог читать события, но вдруг что-то произошло (я ничего не менял в коде) и у меня такая ошибка:
Файл "C: \ Users \ user_catalog \ Desktop \ outread.py", строка 60, в getSharedCalendarEntries sharedCalendar = namespace.GetSharedDefaultFolder (получатель, 9) .Folders (TS_name) .Items
Файл "C: \ Users \ user_catalog \ AppData \ Local \ Programs \ Python \ Python38 \ lib \ site-packages \ win32com \ client \ dynamic.py", строка 197, в вызове возвращает self._get_good_object_ (self. oleobj .Invoke (* allArgs), self. olerepr .defaultDispatchName, None) pywintypes.com_error: (-2147352567, 'Произошло исключение.', (4096, "Microsoft Outlook", "Не удалось выполнить операцию. Не удалось найти объект.", Нет, 0, -2147221233), Нет)
У меня был доступ только для чтения к общим календарям. Владелец общих календарей сказал, что она вышла из сети, и время выхода было в то же время, когда мое приложение перестало работать.
У кого-нибудь из вас была такая проблема или есть несколько советов для меня? Заранее спасибо!
Пио