Pregunta

He escrito algunas herramientas de Python en el pasado para extraer datos de mis contactos de Outlook. Ahora, estoy tratando de modificar mis contactos de Outlook. Estoy descubriendo que Outlook está notando mis cambios, pero no se están pegando. Parece que estoy actualizando algo de caché, pero no el registro real.

El código es sencillo.

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

En este punto, cambio a Outlook, que se abre en la vista Tarjetas de direcciones detalladas.

Miro el resumen de contacto (sin abrirlo) y la categoría no cambia (¿no se actualiza?).

Abro el contacto y su categoría ha cambiado, a veces . (No estoy seguro de cuándo, pero parece que está relacionado con el caché). Si ha cambiado, me pide que guarde los cambios cuando lo cierro, lo cual es extraño, porque no he cambiado nada en la interfaz de usuario de Outlook.

Si salgo y reinicio Outlook, los cambios desaparecerán.

I sospechoso No llamo a SaveChanges , pero no puedo ver qué objeto lo admite.

Entonces mi pregunta es:

  • ¿Debería llamar a SaveChanges? Si es así, ¿dónde está?
  • ¿Estoy cometiendo algún otro error tonto, que hace que se descarten mis datos?
¿Fue útil?

Solución

Creo que hay un método .Save () en el contacto, por lo que debe agregar:

contact.Save ()

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top