Изменение контактов Microsoft Outlook из Python - PullRequest
9 голосов
/ 02 января 2009

В прошлом я написал несколько инструментов 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? Если это так, где это?
  • Я совершаю еще одну глупую ошибку, из-за которой мои данные отбрасываются?

1 Ответ

6 голосов
/ 02 января 2009

Я полагаю, что для контакта есть метод .Save (), поэтому вам нужно добавить:

contact.Save ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...