Friday, July 1, 2011

Ejecutar Reglas de Outlook basadas en criterios de Tiempo/Evento

Una forma de Organizar nuestros mensajes de entrada en Outlook es utilizando "Reglas" [Rules].

Por ejemplo podemos crear alguna para re-direccionar correo a carpetas personales de forma automática (Util si te limitan el espacio del buzón como a mi). Suena bien verdad, excepto que solo existen dos formas de ejecutarlos;
1) Automaticamente, (dependiendo del template seleccionado: cuando arriben a la "bandeja de entrada" (Inbox) [Apply rule on message I receive] o cuando uno los envia [Apply rule on message I send])
2) Manualmente, usando la opcion de "ejecutar ahora" [Run Now].
Pero en ningún caso bajo un cronograma especifico :O!
Esto no parecía darme molestias mayores hasta hace poco.
Me di cuenta del siguiente problema:
Que pasa si quiero acceder a mi correo de forma remota (http) utilizando una configuración RPC en el servidor Exchange del trabajo (Útil para revisar/reenviar correos desde el mobil), si las reglas activas se encargan de mover los mensajes a distintas carpetas y por tanto no son mostrados en la pagina?.

Busque la forma de configurar la ejecución automática de las reglas basadas en un calendario en Outlook, pero al parecer esta característica no es soportada.

Sin embargo revisando algunas paginas encontré una sugerencia interesante, que probé y funcionó para mi en un ambiente Windows 7, Outlook 2007:
La idea es usar un script que se encargue de lanzar las reglas y que además se ejecute basado en un criterio de tiempo o evento.

Asi que, utilice el siguiente código vbs:


   1:  '***************************************************
   2:  'Referencias: http://msdn.microsoft.com/en-us/
   3:  '***************************************************
   4:  Dim myOlApp, myNamespace, myolRules, rule
   5:   
   6:  Set myOlApp = CreateObject("Outlook.Application")
   7:  Set myNamespace = myOlApp.GetNamespace("MAPI")
   8:  Set myFolder = myNamespace.GetDefaultFolder(6)
   9:   
  10:  Const SHOW_PROCESS = True
  11:  Const INCLUDE_SUB_FOLDERS = True
  12:  Const RULE_EXECUTE_OPTION = 0
  13:   
  14:  myNameSpace.Logon "Outlook", , True, True
  15:  WScript.sleep 3000
  16:  Set myOlRules = myNamespace.DefaultStore.GetRules
  17:   
  18:  For Each rule In myOlRules
  19:  rule.Execute SHOW_PROCESS, myFolder, INCLUDE_SUB_FOLDERS, RULE_EXECUTE_OPTION
  20:  Next
  21:   
  22:  Set myolRules = Nothing
  23:  Set myFolder = Nothing
  24:  myNamespace.Logoff
  25:   
  26:  Set myNamespace = Nothing
  27:  Set myOlApp = Nothing


Y para ejecutarlo automaticamente utilice el "Automatizador de Tareas" [Task Scheduler] del Sistema. Cree una tarea siguiendo los pasos a continuación:
1. Ir a Control Panel -> System and Security -> Administrative Tools -> Task Scheduler.
2. Click sobre el menu "Action" y luego "Create Basic Task" (Esto iniciará el Wizard de configuración)
3. Ingresar un nombre para la tarea (ej. “RunOutlookRulesScript”), click Next.
4. En la siguiente ventana “when do you want the task to start?”, seleccionar la opcion (criterio) que mejor se ajuste a tus necesidades (ej. “When I Log on”), click Next para continuar.
5. Seleccionar “Start Program” en la ventana de “What action do you want the task to perform?” y luego click sobre Next.
6. Ingresar/Buscar la ruta del script que querramos ejecutar, click Next
5. Click Finish.

Y eso es todo, la siguiente vez que inicies sesión en tu PC wala!, Inbox limpio y correo organizado :) Suerte con tus scripts.

No comments:

Post a Comment