Frage

Ich habe ein paar Python-Tools in der Vergangenheit geschriebene Daten aus meinen Outlook-Kontakten zu extrahieren. Nun, ich versuche zu modify meine Outlook-Kontakte. Ich finde, dass meine Änderungen von Outlook festgestellt werden, aber sie sind nicht kleben. Ich zu sein scheinen einige Cache aktualisiert wird, aber nicht der eigentliche Rekord.

Der Code ist einfach.

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

An dieser Stelle ich zu Outlook wechseln, die auf die Adresskarten mit Details-Ansicht geöffnet wird.

Ich schaue auf der Kontakt Zusammenfassung (ohne es zu öffnen) und die Kategorie ist unverändert (nicht aktualisiert?).

Ich öffne den Kontakt und seiner Kategorie hat sich verändert, manchmal . (Nicht sicher, wann, aber es fühlt sich an wie es Cache verwandt.) Wenn sie sich geändert hat, fordert es mich zum Speichern von Änderungen, wenn ich es in der Nähe, die ungerade ist, weil ich nicht alles in der Outlook-Benutzeroberfläche geändert haben.

Wenn ich Outlook beenden und neu starten, werden die Änderungen gegangen.

I verdächtigen I Savechanges , aber ich kann nicht sehen, welches Objekt sie unterstützt.

Also meine Frage ist:

  • Sollte ich Savechanges anrufen? Wenn ja, wo ist es?
  • Bin ich einige andere dumme Fehler zu machen, die meine Daten verursacht verworfen werden?
War es hilfreich?

Lösung

Ich glaube, es ein .Save ist () -Methode auf den Kontakt, so müssen Sie hinzufügen:

contact.Save ()

scroll top