2011-08-17 117 views
4

我試圖自動創建一堆Outlook規則。我正在使用Python 2.7,win32com和Outlook 2007.爲此,我必須創建一個新的Rule對象併爲其移動操作指定一個文件夾。但是,我無法成功設置Folder屬性 - 儘管我給出了正確類型的對象,但它仍然保持爲無。使用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 

我看在非動態模式下使用win32com當由makepy生成的代碼。 _MoveOrCopyRuleAction類別的字典中有'Folder'的條目,但除此之外,我很難過。

+0

我有這個IronPython的工作。我需要使用:Outlook._MoveOrCopyRuleAction.Folder.SetValue(rule.Actions.MoveToFolder,文件夾)。儘管如此,我仍然想看到一個win32com答案。 – PAG

+0

運行上述命令時,我得到的錯誤對象沒有屬性'DefaultStore'。我是否缺少規則存儲?什麼是一個?此外,win32com中的SetFolder()方法如何處理IronPython使用的對象? –

回答

2

嘗試SetFolder()

我想從你的代碼嘗試SetFolder的粗略閱讀(移動,foo_folder)

win32com做一些驚人的魔力,但有時COM對象只是打敗它。 當窗體集{名}獲取{名}

看到創建的對象不能按照Python的慣例,場面一個setter和getter背後:http://permalink.gmane.org/gmane.comp.python.windows/3231 NB - 馬克·哈蒙茲如何調試COM是無價的 - 這東西只是隱藏在usegroups ...

+0

關於哪個對象的SetFolder? 'print move.SetFolder'引發一個AttributeError – PAG