8

Outlookの連絡先からデータを抽出するために、過去にいくつかのPythonツールを作成しました。現在、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は[詳細アドレスカード]ビューで開きます。

連絡先の概要を(開かずに)確認しましたが、カテゴリは変更されていません(更新されていませんか?)。

連絡先を開くと、そのカテゴリが変更されていることがあります。(いつかはわかりませんが、キャッシュに関連しているように感じます。)変更されている場合、Outlook UIで何も変更していないため、閉じると変更を保存するように求められます。これは奇妙なことです。

Outlookを終了して再起動すると、変更は失われます。

SaveChangesの呼び出しに失敗しているのではないかと思いますが、どのオブジェクトがそれをサポートしているかわかりません。

だから私の質問は:

  • SaveChangesを呼び出す必要がありますか?もしそうなら、それはどこにありますか?
  • 私は他の愚かな間違いを犯していて、それが私のデータを破棄する原因になっていますか?
4

1 に答える 1

6

連絡先に.Save()メソッドがあると思うので、次を追加する必要があります。

contact.Save()

于 2009-01-02T00:44:33.950 に答える