Abril 2008
L M X J V S D
« Mar   May »
 123456
78910111213
14151617181920
21222324252627
282930  

Google Docs y Microsoft Office 2007

Google proporciona, mediante sus proyectos de código (Google Code), todo tipo de herramientas, algunas de las cuales nos permiten interactuar con sus productos, como puede ser el correo, documentos o calendario. Entre ellas, se encuentra la .NET Library for the Google Data API, dentro de .NET Client Library. Mediante el uso de esta biblioteca de clases podemos desarrollar aplicaciones .NET que puedan acceder a los recursos de Google. Sin embargo, se trata de una biblioteca programada inicialmente sobre el .NET Framework 1.1, ya obsoleto, aunque es posible obtener el código y recompilarlo para el Framework 2.0, por lo que sería posible usarlo con Visual Studio 2005 y 2008.

En cualquier caso, hoy quería mostrar cómo interactuar de una forma sencilla y unilateral con Google Docs a través del correo electrónico. Google Docs, la aplicación web para la gestión de documentos (hojas de cálculo, documentos de texto y presentaciones), permite la edición en línea de los documentos, así como la conversión entre distintos formatos (tanto exportación como importación). Así, a la hora de incluir un nuevo documento, podemos crearlo directamente on-line, o subir uno que ya tengamos creado con aplicaciones del tipo de OpenOffice Writer o Microsoft Word. Sin embargo, existe una posibilidad interesante y poco usada que consiste en enviar el documento por correo electrónico, bien como documento adjunto al mismo, bien dentro del propio cuerpo del mensaje. La dirección a la que debemos enviarlo nos la proporciona el propio Google Docs en su opción Upload, y suele ser del tipo "Nombre+Del+Usuario-listadenumeros @prod.writely.com". Aunque no es la forma más elegante ni eficiente para disfrutar de las posibilidades de Google Docs, nos va a servir para unir dos proyectos presentados en Lobosoft y conseguir un sencillo método para hacer una copia de seguridad de un documento de Microsoft Word 2007 en Google Docs. Microsoft y Google juntos, ¿da miedo, verdad?

El proceso no puede ser más sencillo. Creamos un nuevo proyecto de Visual Studio 2008 del tipo Office 2007-Word 2007 Add-in. Añadimos al proyecto un nuevo Ribbon, mediante el mismo proceso que seguimos en su día en la entrada de aproximación a Visual Studio Tools for Office (VSTO v3). A continuación, añadimos la funcionalidad de envío de correo que creamos en el post sobre el envío de correos mediante Gmail y C#. Lo ideal sería, cuando tuviésemos la funcionalidad de envío y recepción de correo completa, crear un nuevo componente que pudiésemos reutilizar en nuestros proyectos, pero por la sencillez del ejemplo, simplemente traemos la clase Lobosoft.Outgleek.Mail al proyecto, y nos disponemos a usarla.

pestania.PNG

Y lo novedoso viene ahora. Simplemente debemos añadir un botón al RibbonGroup que ejecute el envío del correo. En el ejemplo, además, he incluido un pequeño TextBox donde insertar la dirección de correo a la que deseamos enviar el documento (y que será, presumiblemente, la que nos proporcionó Google Docs). En un proyecto mayor, esto podría ser configurable desde algún punto de la aplicación, al igual que los parámetros de la cuenta de correo de Gmail, y el propio servidor de correo, que usaremos para llevar a cabo el envío.

opciones.PNG

El código asociado al botón Save to Docs será el siguiente:

C#:
  1. private void SaveToDocs_Click(object sender, RibbonControlEventArgs e)
  2. {
  3. Mail newMail = new Mail();
  4. newMail.SendMail(editBox1.Text, DocumentManagement.DocumentName, DocumentManagement.GetText());
  5. }

Y llevará a cabo un par de acciones: recuperar el nombre del documento, a través de la clase DocumentManagement, que habremos creado a tal efecto, y el texto del documento en un formato apropiado. La recuperación del texto del documento tiene su miga, ya que (al menos hasta donde llegan mis conocimientos actuales de la jerarquía del objeto Document de Interop.Word.Document, no es trivial recuperar todo el texto y el formato del documento. Para hacerlo hemos recurrido a un pequeño truco. Usar el método Select() de la clase Document para seleccionar todo el documento para, posteriormente, copiarlo al portapapeles mediante el método Copy() de Interop.Word.Selection. A partir de aquí, volvemos a pedir al portapapeles (Clipboard) el texto del documento, indicándome mediante el parámetro format, del tipo TextDataFormat, el formato en que deseamos que nos lo devuelva, en este caso HTML.

C#:
  1. public static string GetText()
  2. {
  3. try
  4. {
  5. Word.Document myDocument = Globals.ThisAddIn.Application.ActiveDocument;
  6. myDocument.Select();
  7. Globals.ThisAddIn.Application.Selection.Copy();
  8. return Clipboard.GetText(TextDataFormat.Html);
  9. }
  10. catch (Exception ex)
  11. {
  12. throw ex;
  13. }
  14. }

El documento que vamos a almacenar en Google Docs es el siguiente:

documento.PNG

Hecho esto, procedemos a enviar el correo a Google Docs, con el nombre del documento por Asunto, ya que este campo le indicará el nombre que debe dar al documento remoto, y el HTML del documento en el cuerpo del mensaje.

Accedemos a Google Docs para ver que, en efecto, un nuevo documento ha sido creado.

engoogledocs.PNG

Sin embargo, los resultados están a la vista, y la conversión a HTML que lleva a cabo el método GetText() del Clipboard no es del todo compatible con Google Docs.

eldocumentofinal.PNG

Por tanto, aunque resulta un método extremadamente simple para realizar un backup de nuestros documentos en Google Docs, no es todo lo adecuado que debería. No nos quedará más remedio, pues, que volver a compilar y adaptar el código de la .NET Client Library a los Frameworks 2.0 ó 3.5 de .NET.


Entradas relacionadas:
  • La perfidia del software
  • Un microgestor de descargas casero
  • Evitando fallos de carga dinámica de ensamblados
  • Recursos interesantes
  • Ironías de la vida
  • Etiquetas:

    Richard Stallman en Málaga

    En todas las épocas de la Historia han existido filósofos, personas que han sabido llegar más allá del pensamiento común, y que se han volcado en la difusión de sus ideas. En nuestros días, inmersos en la revolución tecnológica que nos impone la informática, donde impera la máxima del más rápido, más potente o, simplemente, el más moderno, el usuario con frecuencia se ve absorbido por la vorágine de las actualizaciones del software, de la compra de nuevos equipos para satisfacer los requerimientos de aquél. Uno de los filósofos de nuestros días no es científico, ni escritor, sino programador, y su nombre es Richard Stallman. Ayer pudimos disfrutar de su verbo fácil y de su humor inteligente en La Casa Invisible de Málaga, donde bajo el lema Software Libre en la ética y en la práctica, este librepensador nos explicó las bases éticas que subyacen bajo la filosofía del proyecto GNU (acrónimo recursivo que significa GNU not Unix) que lidera desde 1984.

    Richard Stallman

    Para Stallman, el software debe ser libre porque libres son sus usuarios, e imponerles la censura y el bloqueo de sus libertades digitales, por llamarlas de algún modo, impide la práctica de sus derechos democráticos. Durante más de dos horas y media, Stallman trató temas como la ética del software, las licencias de software libre, la violación de derechos en el software, las patentes del software o la obligación del uso del software libre por parte de los gobiernos y de las instituciones educativas. Al final, como viene siendo habitual en las charlas de este "evangelizador" del software libre, se transfiguró en su otro yo, San Ignucio (Saint Ignucius), y con su mesiánica imagen nos exhortó a liberar nuestras máquinas del yugo de los sistemas operativos y resto de software privativo. Todo un personaje, sin duda.

    San Ignucio

    En cualquier caso, coincido con buena parte de sus palabras, de su mensaje. Como miembro fundador de una de las asociaciones sin ánimo de lucro más activas de Andalucía, que protege y vela por la conservación del medio ambiente desde hace más de 10 años, y como informático, siempre he trasmitido a mis compañeros la necesidad de usar software libre para las gestiones propias de la organización. Los gobiernos, las asociaciones y las escuelas deberían usar software libre, por muchas razones. Es gratuito, lo que lleva al ahorro del erario público, que al fin y al cabo es la suma de las aportaciones de todos. Es más seguro, ya que es probado y actualizado continuamente por una extensa comunidad de usuarios y programadores en todo el mundo. Además, no nos vemos sometidos a los vaivenes económicos y políticos de las grandes corporaciones de software. Esto se ve claramente ahora, cuando Microsoft, por poner un ejemplo, no quiere seguir dando soporte a Windows XP porque QUIERE vender su Windows Vista. Y ante la pérdida de mercado que le supondría el amplio parque informático compuesto por los equipos que no cumplen con lo requerido por Vista, desea seguir ofreciéndolo a países en vías de desarrollo. Es decir, elige cómo y a quién vende su software, o lo que es lo mismo, ahora los sistemas operativos serán como las discotecas, que se reservan el derecho de admisión.

    Ante todo esto, como usuarios y ciudadanos que somos, tenemos la última palabra. ¿Y tú, eres libre?

    Para saber más:

    Campañas FSF:


    Entradas relacionadas:
  • Vuela esta canción para ti Lucía…
  • La libertad de los internautas europeos en juego
  • Día Mundial del Medio Ambiente
  • Multitarea en Linux
  • De “esgaes”, Europa y otras hierbas
  • Etiquetas: , , , ,

    |