2009-01-02 141 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