J'essaie de créer automatiquement un ensemble de règles Outlook. J'utilise Python 2.7, win32com et Outlook 2007. Pour ce faire, je dois créer un nouvel objet Rule et spécifier un dossier pour son action de déplacement. Cependant, je ne peux pas définir la propriété Folder avec succès - il reste simplement None, même si je donne un objet du bon type.Définition d'une propriété à l'aide de 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()
Prints
<win32com.gen_py.Microsoft Outlook 12.0 Object Library.MAPIFolder instance at 0x51634584> None None
J'ai regardé le code généré par makepy
lors de l'utilisation win32com en mode non dynamique. La classe _MoveOrCopyRuleAction
a une entrée pour 'Folder'
dans sa dict _prop_map_put_
, mais à part ça, je suis perplexe.
J'ai ce travail avec IronPython. J'avais besoin d'utiliser: Outlook._MoveOrCopyRuleAction.Folder.SetValue (rule.Actions.MoveToFolder, dossier). Néanmoins, j'aimerais toujours voir une réponse win32com. – PAG
Je reçois un objet d'erreur n'a pas d'attribut 'DefaultStore' lors de l'exécution ci-dessus. Est-ce qu'il me manque un magasin de règles? QU'en est-il un? Est-ce que l'application SetFolder() dans win32com fonctionne aussi sur les objets utilisés par IronPython? –