Question

J'ai déjà écrit quelques outils Python pour extraire des données de mes contacts Outlook. J'essaie maintenant de modifier mes contacts Outlook. Je constate que mes modifications sont notées par Outlook, mais elles ne collent pas. Il semble que je mette à jour un cache, mais pas le véritable enregistrement.

Le code est simple.

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

À ce stade, je passe à Outlook, qui s'ouvre dans la vue Cartes d'adresses détaillées.

Je regarde le résumé du contact (sans l'ouvrir) et la catégorie est inchangée (non actualisée?).

J'ouvre le contact et sa catégorie A changé, parfois . (Vous ne savez pas quand, mais c'est comme si c'était lié au cache.) S'il a changé, il m'invite à enregistrer les modifications lorsque je le ferme, ce qui est étrange, car je n'ai rien changé dans l'interface utilisateur Outlook.

Si je quitte et redémarre Outlook, les modifications ont été supprimées.

Je soupçonne je ne parviens pas à appeler SaveChanges , mais je ne vois pas quel objet le supporte.

Ma question est donc la suivante:

  • Devrais-je appeler SaveChanges? Si oui, où est-il?
  • Est-ce que je commets une autre erreur stupide qui provoque la suppression de mes données?
Était-ce utile?

La solution

Je pense qu'il existe une méthode .Save () sur le contact, vous devez donc ajouter:

contact.Save ()

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top