2009-01-02 5 views
9

से माइक्रोसॉफ्ट आउटलुक संपर्कों को संशोधित करना मैंने अपने Outlook संपर्कों से डेटा निकालने के लिए अतीत में कुछ पायथन टूल लिखे हैं। अब, मैं को अपने Outlook संपर्कों को संशोधित करने का प्रयास कर रहा हूं। मुझे लगता है कि मेरे परिवर्तन आउटलुक द्वारा नोट किए जा रहे हैं, लेकिन वे चिपके नहीं हैं। मुझे लगता है कि कुछ कैश अपडेट हो रहा है, लेकिन वास्तविक रिकॉर्ड नहीं।पायथन

कोड सीधा है।

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 

इस बिंदु पर, मैं Outlook पर बदल जाता हूं, जो विस्तृत पता कार्ड दृश्य में खोला जाता है।

मैं संपर्क सारांश (इसे खोलने के बिना) देखता हूं और श्रेणी अपरिवर्तित है (ताज़ा नहीं?)।

मैं संपर्क खोलता हूं और इसकी श्रेणी बदल गई है, कभी-कभी। (जब यह सुनिश्चित नहीं होता है, लेकिन ऐसा लगता है कि यह कैश से संबंधित है।) यदि यह बदल गया है, तो यह मुझे परिवर्तनों को सहेजने के लिए संकेत देता है जब मैं इसे बंद करता हूं, क्योंकि मैंने Outlook UI में कुछ भी नहीं बदला है।

यदि मैं Outlook को छोड़ देता हूं और पुनरारंभ करता हूं, तो परिवर्तन समाप्त हो जाते हैं।

I संदिग्ध मैं SaveChanges पर कॉल करने में विफल रहा हूं, लेकिन मैं नहीं देख सकता कि कौन सा ऑब्जेक्ट इसका समर्थन करता है।

तो मेरी सवाल यह है:

  • मैं SaveChanges बुला होना चाहिए? अगर ऐसा है, तो यह कहां है?
  • क्या मैं कुछ और मूर्खतापूर्ण गलती कर रहा हूं, जिससे मेरा डेटा त्याग दिया जा रहा है?

उत्तर

6

मेरा मानना ​​है कि वहाँ है संपर्क पर एक .save() विधि है, तो आप जोड़ने की जरूरत:

contact.Save()

+0

यही काम करता है। बहुत धन्यवाद। – Oddthinking

+0

इससे मुझे मदद मिली। मैं संपर्क कर रहा था। सहेजें क्योंकि मैं माइक्रोसॉफ्ट संदर्भ पढ़ रहा था। के बिना() कोई त्रुटि संदेश नहीं है, लेकिन निश्चित रूप से यह काम नहीं करता है। – sparklewhiskers

+0

हां, दुर्भाग्यवश सेव() को कॉल करना मेरे लिए आईएमएपी राशि पर एकल आइटम के लिए लगभग एक सेकंड लेता है, और मुझे कई वस्तुओं को संशोधित करने की आवश्यकता है। कोई विचार? –