Domanda

Ho scritto alcuni strumenti Python in passato per estrarre i dati dai miei contatti di Outlook. Ora sto provando a modificare i miei contatti di Outlook. Sto scoprendo che le mie modifiche vengono notate da Outlook, ma non si attaccano. Sembra che stia aggiornando un po 'di cache, ma non il record reale.

Il codice è semplice.

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

A questo punto, passo a Outlook, che viene aperto nella vista Schede indirizzi dettagliate.

Guardo il riepilogo dei contatti (senza aprirlo) e la categoria è invariata (non aggiornata?).

Apro il contatto e la sua categoria È cambiata, a volte . (Non sono sicuro di quando, ma sembra che sia correlato alla cache.) Se è cambiato, mi chiede di salvare le modifiche quando lo chiudo, il che è strano, perché non ho cambiato nulla nell'interfaccia utente di Outlook.

Se ho chiuso e riavviato Outlook, le modifiche sono state annullate.

I sospetto Non riesco a chiamare SaveChanges , ma non riesco a vedere quale oggetto lo supporta.

Quindi la mia domanda è:

  • Devo chiamare SaveChanges? In tal caso, dov'è?
  • Sto facendo qualche altro stupido errore, che sta causando l'eliminazione dei miei dati?
È stato utile?

Soluzione

Credo che ci sia un metodo .Save () sul contatto, quindi è necessario aggiungere:

contact.Save ()

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top