2009-01-02 94 views
9

我過去編寫了一些Python工具來從我的Outlook聯繫人中提取數據。現在,我正在嘗試修改我的Outlook聯繫人。我發現我的變化正在被Outlook所注意到,但他們並不堅持。我似乎正在更新一些緩存,但不是真正的記錄。從Python修改Microsoft 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,更改將消失。

嫌疑人我沒有打電話SaveChanges,但我看不到哪個對象支持它。

所以我的問題是:

  • 我應該調用的SaveChanges?如果是這樣,它在哪裏?
  • 我是否犯了一些其他愚蠢的錯誤,導致我的數據被丟棄?

回答

6

我相信是有在接觸的.Save()方法,所以你需要添加:

contact.Save()

+0

工程。非常感謝你。 – Oddthinking 2009-01-02 08:19:22