Cuaderno de GNUtas

Exportar la agenda de Org a un mail automático y periódico

La agenda de Org Mode es un portento de eficiencia. Siempre solícita cada vez que la invoquemos, por ejemplo con la secuencia C-c a a, para que nos recolecte y muestre todos los TODO que tenemos en el día presente y en los que se aproximan. Tareas, en fin, que temerariamente marcamos en el pasado con una fecha límite, y tan lejana nos parecía en su momento. A la agenda, memoriosa, no se le escapa nada.

Pero si la agenda es casi perfecta en su asepsia, nosotros por contra resultamos indolentes, perezosos y (ese término horrible, que ya pronunciarlo o escribirlo es una penitencia) procrastinadores natos. Es aquí donde dos venerables herramientas, GNU Mail y Cron, se alían para convertirse en nuestra conciencia. Si no vamos a la agenda, hagamos que la agenda vaya a nosotros y nos persiga. La idea es exportarla a un documento de texto simple, semanalmente, y auto-enviarnos un correo periódico. Y la manera de hacerlo, muy sencilla, como veremos a continuación.

Para exportar la agenda, echamos mano de nuevo de la utilísima función batch de Emacs, que nos permite controlarlo a distancia, casi con el pensamiento. Podemos usar este comando:

emacs -batch -l ~/.emacs -eval '(org-batch-agenda "a")' 2 > agenda.txt

Lo que viene a hacer es evaluar en el archivo de inicio la función que muestra la vista de agenda y exporta el resultado a un archivo de texto simple llamado agenda.txt.

Creamos, a continuación, un sencillo script que haga tres cosas:

  1. Ejecutar ese comando
  2. Enviarnos con GNU Mail el archivo agenda.txt (con la fecha actualizada) a nuestra dirección de correo
  3. Eliminar el archivo agenda.txt
#!/bin/bash

emacs -batch -l ~/.emacs -eval '(org-batch-agenda "a")' 2 > agenda.txt

/usr/bin/mail -s "Agenda para $(date)" nuestra-dirección-de-correo < agenda.txt

rm agenda.txt

exit

Naturalmente, antes tendremos que configurar GNU Mail para que pueda enviar correos desde nuestra cuenta. Es tan simple como introducir algunos datos en el archivo /etc/mail.rc. Para ello, recomiendo echar un ojo a esta entrada de este excelente blog donde se explica todo de forma meridiana.

Por último, asignamos la ejecución de nuestro script (que hemos llamado agenda.sh y le hemos dado permisos de ejecución) a una tarea programada con cron. La cuestión es: ¿cada cuanto tiempo? Bueno, no es cosa de que se nos recuerde nuestras vergüenzas de hora en hora. Semanalmente me parece lo más razonable. Editamos crontab con el comando

crontab -e

Y añadimos un comodín @weekly para no complicarnos con el jaleo de los asteriscos:

@weekly /ruta/hacia/agenda.sh

Esto quiere decir que el script se ejecutará todos los domingos a las 00:00. Hay una alta probabilidad de que a esas horas esté con el ordenador encendido y reciba el mail. Pero, si no, tampoco pasa nada. Quién se va a enterar…

Publicado: 10/03/2019

Última actualización: 10/03/2019


Índice general

Acerca de...

Esta obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial 4.0 Internacional.

© Juan Manuel Macías
Creado con esmero en
GNU Emacs