Изменение контактов Microsoft Outlook с помощью Python
Вопрос
В прошлом я написал несколько инструментов на Python для извлечения данных из моих контактов Outlook.Сейчас я пытаюсь изменять мои контакты в Outlook.Я обнаруживаю, что Outlook отмечает мои изменения, но они не сохраняются.Кажется, я обновляю какой-то кэш, но не реальную запись.
Код очень прост.
import win32com.client
import pywintypes
o = win32com.client.Dispatch("Outlook.Application")
ns = o.GetNamespace("MAPI")
profile = ns.Folders.Item("My Profile Name")
contacts = profile.Folders.Item("Contacts")
contact = contacts.Items[43] # Grab a random contact, for this example.
print "About to overwrite ",contact.FirstName, contact.LastName
contact.categories = 'Supplier' # Override the categories
# Edit: I don't always do these last steps.
ns = None
o = None
На этом этапе я переключаюсь на Outlook, который открывается для просмотра Подробных карточек адресов.
Я просматриваю сводку контактов (не открывая ее), и категория не меняется (не обновляется?).
Я открываю контакт, и его категория изменилась, иногда.(Не уверен, когда, но похоже, что это связано с кэшем.) Если он изменился, мне предлагается сохранить изменения при его закрытии, что странно, потому что я ничего не менял в пользовательском интерфейсе Outlook.
Если я выйду из системы и перезапущу Outlook, изменения исчезнут.
Я подозреваемый Я не могу позвонить Сохранение изменений, но я не вижу, какой объект это поддерживает.
Итак, мой вопрос заключается в следующем:
- Должен ли я вызывать SaveChanges?Если да, то где это находится?
- Я совершаю какую-то другую глупую ошибку, из-за которой мои данные удаляются?
Решение
Я полагаю, что в контакте есть метод .Save(), поэтому вам нужно добавить:
контакты.Сохранить()