В прошлом я написал несколько инструментов 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, изменения пропадут.
I подозреваю Мне не удается вызвать SaveChanges , но я не вижу, какой объект его поддерживает.
Итак, мой вопрос:
- Должен ли я звонить в SaveChanges? Если это так, где это?
- Я совершаю еще одну глупую ошибку, из-за которой мои данные отбрасываются?