Pergunta

Eu escrevi algumas ferramentas Python no passado para extrair dados de meus contatos do Outlook. Agora, eu estou tentando Modificar meus contatos do Outlook. Eu estou achando que as minhas alterações estão sendo observado pelo Outlook, mas eles não estão aderindo. I parecem estar atualizando alguns cache, mas não o registro real.

O código é simples.

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

Neste ponto, eu mudar para o Outlook, que é aberto ao endereço detalhado Cartões de vista.

Eu olho para o resumo de contato (sem abri-lo) e a categoria permanece inalterada (não atualizados?).

I abra o contato e sua categoria mudou, às vezes . (Não tenho certeza de quando, mas parece que ela está relacionada cache.) Se ele mudou, ele me pede para guardar as alterações quando eu fechá-lo o que é estranho, porque eu não mudei nada na interface do usuário do Outlook.

Se eu sair e reiniciar o Outlook, as alterações são ido.

I suspeito eu estou deixando de chamar SaveChanges , mas eu não posso ver que o apoia objeto.

Então, minha pergunta é:

  • Eu deveria estar chamando SaveChanges? Se assim for, onde está?
  • Am I fazer algum outro erro bobo, o que está causando meus dados para ser descartada?
Foi útil?

Solução

Eu acredito que há um método .Save () sobre o contato, então você precisa adicionar:

contact.Save ()

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top