我正在尝试编写一个Python脚本/程序来关闭我在Outlook 2010中创建的电子邮件规则。
通过VBA,我设法编写了一个函数,它将根据传入的布尔值打开和关闭一组规则名称。
Function toggleRules(ruleNames() As String, tf As Boolean) As Boolean
Dim olRules As Outlook.Rules
Dim olRule As Outlook.Rule
Dim blnExecute As Boolean
For Each Rule In ruleNames()
Set olRules = Application.Session.DefaultStore.GetRules
Set olRule = olRules.Item(Rule)
olRule.Enabled = tf
If blnExecute Then olRule.Execute ShowProgress:=True
olRules.Save
Set olRules = Nothing
Set olRule = Nothing
Next Rule
End Function
这样可以打开/关闭我通过名称与其他VBA函数发送的规则。如果你很好奇,那么当某个主题的任务提醒被激活时,它将调用此函数。
我想通过python实现这一点,所以我可以触发它而不仅仅是提醒定时器,而且只是一般原因我更喜欢这样做。似乎可以使用pywin32扩展来完成:
http://sourceforge.net/projects/pywin32/
但是我很难尝试进入规则界面。我可以访问Outlook应用程序和命名空间,但似乎无法确定从何处开始。
import win32com.client
x = win32com.client.gencache.EnsureDispatch("Outlook.Application")
y = x.GetNamespace("MAPI")
最终,我希望基本上具有相同的功能,给定一个名称列表和一个bool,让它在outlook中切换这些规则。
感谢。
答案 0 :(得分:2)
感谢您的指导,我能够弄明白!
对于那些感兴趣的人,这里有一个基本的概述,很长的路要走,并禁用规则:
import win32com.client
x = win32com.client.gencache.EnsureDispatch("Outlook.Application")
y = x.GetNamespace("MAPI")
z = y.DefaultStore
a = z.GetRules()
b = a.Item("My Rule Name")
b.Enabled = False
a.Save()
再次感谢Eugene Astafiev
答案 1 :(得分:1)
Outlook对象模型适用于所有类型的应用程序(VBA,COM加载项,自动化等)。获得Namespace类的实例后,您可以获取默认存储(或迭代配置文件中的所有存储)。
Namespace类的DefaultStore属性返回一个Store对象,表示配置文件的默认Store。
Namespace类的Stores属性返回一个Stores集合对象,该对象表示当前配置文件中的所有Store对象。
最后,Store类提供GetRules方法,该方法返回一个Rules集合对象,该对象包含为当前会话定义的Rule对象。