2011-08-17 14 views
4

私は一連のOutlookルールを自動的に作成しようとしています。私はPython 2.7、win32com、Outlook 2007を使用しています。これを行うには、新しいRuleオブジェクトを作成し、移動アクションのフォルダを指定する必要があります。しかし、私はフォルダのプロパティを正常に設定することはできません - 私は正しいタイプのオブジェクトを与えるにもかかわらず、それはただのままです。win32comを使用してプロパティを設定する

import win32com.client 
from win32com.client import constants as const 

o = win32com.client.gencache.EnsureDispatch("Outlook.Application") 
rules = o.Session.DefaultStore.GetRules() 

rule = rules.Create("Python rule test", const.olRuleReceive) 
condition = rule.Conditions.MessageHeader 
condition.Text = ('Foo', 'Bar') 
condition.Enabled = True 

root_folder = o.GetNamespace('MAPI').Folders.Item(1) 
foo_folder = root_folder.Folders['Notifications'].Folders['Foo'] 

move = rule.Actions.MoveToFolder 
print foo_folder 
print move.Folder 
move.Folder = foo_folder 
print move.Folder 

# move.Enabled = True 
# rules.Save() 

プリント

 
<win32com.gen_py.Microsoft Outlook 12.0 Object Library.MAPIFolder instance at 0x51634584> 
None 
None 

Iは、非動的モードでwin32com使用時makepyによって生成されたコードを見てきました。クラス_MoveOrCopyRuleAction_prop_map_put_ dictに'Folder'のエントリがありますが、それ以外は私が困惑しています。

+0

これはIronPythonで動作しています。私はOutlook._MoveOrCopyRuleAction.Folder.SetValue(rule.Actions.MoveToFolder、folder)を使う必要がありました。それでも、私はまだwin32comの答えを見たいと思います。 – PAG

+0

上記の実行時に、エラーオブジェクトに 'DefaultStore'という属性がありません。ルールストアがありませんか?何ですか?また、IronPythonが使用するオブジェクトに対して、Win32comのSetFolder()アプラックが機能しますか? –

答えて

2

するTry SetFolder私はあなたのコードのトライSetFolder(移動、foo_folder)の一遍読みからだと思う()

win32comいくつかの素晴らしい魔法を行いますが、時にはCOMオブジェクトはそれを倒します。 シーンセッターとゲッターの背後にある神託の規約に従うことができないオブジェクトは、フォームセット{名}ゲット{名前}

参照の作成されたとき:http://permalink.gmane.org/gmane.comp.python.windows/3231は NB - マーク・ハモンズコムをデバッグする方法は貴重である - このようなものusegroupsにちょうど隠されています...

+0

オブジェクトのSetFolder? 'print move.SetFolder'はAttributeErrorを発生させます – PAG

関連する問題