Python 打开和关闭 Outlook 电子邮件规则的脚本
Python Script to Turn Outlook E-Mail Rules on and Off
我正在尝试编写 Python script/program 来关闭我在 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
这行得通,并将 on/off 我按名称发送给它的规则与其他 VBA 功能一起使用。如果你很好奇,目前当一个特定主题的任务提醒触发时,它会调用这个函数。
我想通过 python 完成此操作,这样我就可以更复杂地触发它,而不仅仅是提醒计时器,而且只是一般原因我更喜欢那样做。好像可以用pywin32扩展来完成:
http://sourceforge.net/projects/pywin32/
但是我很难进入规则界面。我可以访问 Outlook 应用程序和命名空间,但似乎无法弄清楚从这里去哪里。
import win32com.client
x = win32com.client.gencache.EnsureDispatch("Outlook.Application")
y = x.GetNamespace("MAPI")
最终我想要基本上具有相同的功能,给定一个名称列表和一个布尔值,让它在 outlook 中切换这些规则。
谢谢。
Outlook 对象模型适用于所有类型的应用程序(VBA、COM 加载项、自动化等)。在获得命名空间 class 的实例后,您可以获得默认商店(或遍历配置文件中的所有商店)。
命名空间的 DefaultStore 属性 class returns 表示配置文件默认存储的存储对象。
Namespace Stores 属性 class returns 一个 Stores 集合对象,表示当前配置文件中的所有 Store 对象。
最后,Store class 提供 GetRules 方法,其中 returns 包含为当前会话定义的规则对象的规则集合对象。
多谢指导,我已经搞定了!
对于那些感兴趣的人,这里有一个基本的概述,以及如何实现和禁用规则:
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
我正在尝试编写 Python script/program 来关闭我在 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
这行得通,并将 on/off 我按名称发送给它的规则与其他 VBA 功能一起使用。如果你很好奇,目前当一个特定主题的任务提醒触发时,它会调用这个函数。
我想通过 python 完成此操作,这样我就可以更复杂地触发它,而不仅仅是提醒计时器,而且只是一般原因我更喜欢那样做。好像可以用pywin32扩展来完成:
http://sourceforge.net/projects/pywin32/
但是我很难进入规则界面。我可以访问 Outlook 应用程序和命名空间,但似乎无法弄清楚从这里去哪里。
import win32com.client
x = win32com.client.gencache.EnsureDispatch("Outlook.Application")
y = x.GetNamespace("MAPI")
最终我想要基本上具有相同的功能,给定一个名称列表和一个布尔值,让它在 outlook 中切换这些规则。
谢谢。
Outlook 对象模型适用于所有类型的应用程序(VBA、COM 加载项、自动化等)。在获得命名空间 class 的实例后,您可以获得默认商店(或遍历配置文件中的所有商店)。
命名空间的 DefaultStore 属性 class returns 表示配置文件默认存储的存储对象。
Namespace Stores 属性 class returns 一个 Stores 集合对象,表示当前配置文件中的所有 Store 对象。
最后,Store class 提供 GetRules 方法,其中 returns 包含为当前会话定义的规则对象的规则集合对象。
多谢指导,我已经搞定了!
对于那些感兴趣的人,这里有一个基本的概述,以及如何实现和禁用规则:
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