Вопрос

В прошлом я написал несколько инструментов на 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(), поэтому вам нужно добавить:

контакты.Сохранить()

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top