我过去写过一些 Python 工具来从我的 Outlook 联系人中提取数据。现在,我正在尝试修改我的 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,更改就会消失。
我怀疑我没有调用SaveChanges,但我看不到哪个对象支持它。
所以我的问题是:
- 我应该打电话给 SaveChanges 吗?如果是这样,它在哪里?
- 我是否犯了其他一些愚蠢的错误,导致我的数据被丢弃?