jueves, marzo 15, 2018

Backup de Evernote con Applescript

Evernote es una aplicación diseñada para tomar notas y almacenar la información en libretas de acuerdo a las preferencias de sus usuarios. Estas libretas se almacenan en los servidores de la compañía en la nube. En función de la capa de servicio contratada, se puede tener mayor o menor volumen de datos almacenados y acceso desde diferentes dispositivos.

Utilizo la capa gratuita de este software para organizar mi información. Puesto que no uso imágenes ni contenido multimedia, me vale perfectamente con los 60 Mb mensuales de tráfico de esta capa. Sin embargo, como todo software que usa la nube, siempre quiero tener una copia local de mis datos. Y a ser posible, que ésta se realice de forma automática para poder llamar a la utilidad desde scripts que tengo preparados para la tareas en mi portátil.

En MacOS X Evernote está preparado para interactuar con el resto del sistema usando AppleScript, un lenguaje de scripting que está en los sistemas operativos de Apple desde la versión System 7. Con un pequeño script, es posible activar la aplicación, seleccionar un archivo de destino y hacer una copia local de nuestros datos almacenados en Evernote.

Evernote permite exportar los datos en un solo fichero XML, que usa el sufijo .enex o bien cada nota en un fichero HTML distinto. Mejor usar el primer formato, ya que la importación necesita del mismo para poder realizarse. Otra ventaja del fichero XML se puede procesar usando herramientas de terceros para obtener la información que interese.

El script para realizar la tarea es el siguiente, lo pegamos en el Editor de Script y lo guardamos. Se puede exportar desde el mismo editor como una aplicación, de esta manera con un simple doble click sobre la misma lo ejecutaremos.

tell application "Evernote"
    activate
    set theNewFilePath to (choose file name with prompt ¬
        "Save backup as:" default name ¬
        "Evernote Backup" default location (path to documents folder)) as string
    -- Add the suffix .enex if not in the system
    -- Get the filename
    set AppleScript's text item delimiters to {":"}
    set splitPathList to every text item of theNewFilePath
    set theFilename to last item of splitPathList
    set AppleScript's text item delimiters to ""
    set startSuffix to ((length of theFilename) - 5)
    if startSuffix > 0 then
        set fileSuffix to characters startSuffix thru length of theFilename as string
        if fileSuffix is not equal to ".enex" then
            set theNewFilePath to (theNewFilePath & ".enex")
        end if
    else
        set theNewFilePath to (theNewFilePath & ".enex")
    end if
    set allNotes to find notes
    export allNotes to theNewFilePath format ENEX
end tell

1 comentario:

John Compton dijo...

También puede probar la herramienta Backupery for Evernote: automatiza el proceso de exportación del portátil y puede ejecutarse mediante el programador.