Indudablemente Google Docs es una herramienta que funciona muy bien como repositorio de datos, se pueden subir archivos de diferentes tipos, algunos de ellos se pueden visualizar directamente en el navegador e incluso otros es posible editarlos colaborativamente en línea. Sin embargo, al crecer y crecer el volúmenes de documentos para las empresas se vuelven complejas las labores de descubrimiento y organización de toda esta información. Las colecciones pueden ayudar a categorizar o jerarquizar los documentos hasta cierto punto pero en muchos casos no son suficiente para ordenar y terminan sumando al volumen abrumante de información. La funcionalidad de búsqueda también es muy útil y eficiente pero en muchos casos ni siquiera es claro qué buscar ni cómo.

Ahí es donde entra Google Sites. Con Sites es posible tener un sitio Web temático que consolide y centralice toda la información relacionada con, por ejemplo, un proyecto; haciéndolo lógicamente el mejor punto de partida y facilitando las labores de descubrimiento y estructuración de la información. De este modo, Sites con Docs hacen la combinación perfecta. En particular, vale la pena resaltar la páginas de tipo “file cabinet” o contenedoras de archivos, en ellas se pueden subir o vincular archivos con posibilidades de organización jerárquicamediante carpetas. Aunque mediante la interfaz Web es muy sencillo vincular archivos nuevos a un file cabinet para un volumen considerable de datos es tedioso y consume mucho tiempo.

Google Apps Script nos puede ayudar a hacer de esta una tarea menos tediosa automatizándola. Mediante una secuencia de comandos vamos a:
  1. Consultar el listado de documentos, guardándo en una hoja de cálculo su título, su descripción y su vínculo o dirección URL
  2. Subir las referencias de estos documentos a una página de Google Sites tipo File Cabinet




En primer lugar, creamos una nueva hoja de cálculo y vamos al editor de Google Apps Script, en “Herramientas” - “Editor secuencia de comandos”. En nuestra secuencia de comandos, inicialmente vamos a consultar el servicio DocList Service; que nos permite consultar los contenidos y estructura del listado de documentos en Google Docs para tener el listado completo de documentos que queremos víncular, luego vamos a iterar sobre cada uno escribiendo sus metadatos (nombre, enlace URL, tipo). A continuación el código fuente:

/**
* Funcion que consulta el listado de documentos y escribe los atributos
* necesarios para vincularlos (titulo, descripcion, URL) en la hoja de calculo
* activa
*/
function exportarListadoDocumentos() {
// Obtiene hoja de calculo y hoja activa
var hojaCalculo = SpreadsheetApp.getActiveSpreadsheet();
var hoja = hojaCalculo.getActiveSheet();
// Escribe la columna de encabezados
hoja.getRange(1, 1, 1, 1).setValue("Tipo");
hoja.getRange(1, 2, 1, 1).setValue("Nombre");
hoja.getRange(1, 3, 1, 1).setValue("URL");
hoja.getRange(1, 4, 1, 1).setValue("Fecha de Creación");
hoja.getRange(1, 5, 1, 1).setValue("Fecha de Actualización");
// Obtiene el listado completo de documentos
var misDocs = DocsList.getFiles();
for (var i in misDocs) {
// Consulta metadatos de cada documento
var tipo = misDocs[i].getType();
var nombre = misDocs[i].getName();
var url = misDocs[i].getUrl();
var fechaCreacion = misDocs[i].getDateCreated();
var fechaUltimaActualizacion = misDocs[i].getLastUpdated();
// Escribe estos metadatos, uno en cada fila
hoja.getRange(i + 2, 1, 1, 1).setValue(tipo);
hoja.getRange(i + 2, 2, 1, 1).setValue(nombre);
hoja.getRange(i + 2, 3, 1, 1).setValue(url);
hoja.getRange(i + 2, 4, 1, 1).setValue(fechaCreacion);
hoja.getRange(i + 2, 5, 1, 1).setValue(fechaUltimaActualizacion);
}
hojaCalculo.toast("Éxito",
"Se ha finalizado la exportación del listado de documentos", 5);
}

Al guardar debemos asignarle un nombre a nuestra secuencia de comandos.


Y darle permisos de acceso a nuestros datos, de forma segura mediante el protocolo OAuth.


Como resultado nuestra hoja de cálculo va a ser poblada con todos los documentos.


Esto nos da espacio para depurar nuestro listado de documentos y hacer dos ajustes opcionales creando columnas nuevas: adicionar un párrafo descriptivo en una y también definir una bandera para filtrar únicamente los que efectivamente se van a cargar.

La segunda función de la secuencia de comandos consta de leer cada fila de la hoja de cálculo generada e ir cargándola a una página de Google Sites tipo File Cabinet, el código fuente a continuación:

/**
* Funcion que sube todas las referencias de Google Docs existentes en la
* hoja de calculo activa a una hoja dada de Google Sites tipo File Cabinet
*/
function subirDocsAFileCabinet() {
// Obtiene hoja de calculo y hoja activa
var hojaCalculo = SpreadsheetApp.getActiveSpreadsheet();
var hoja = hojaCalculo.getActiveSheet();
// Obtiene la pagina tipo file cabinet del sitio
var fileCabinet = SitesApp.getSite('eforcers.com', 'prueba').getChildByName('archivos');
for ( var i = 2; i <= hoja.getLastRow(); i++) {
// Obtiene cada uno de los valores relevantes
var nombre = hoja.getRange(i, 2, 1, 1).getValue();
var url = hoja.getRange(i, 3, 1, 1).getValue();
var descripcion = hoja.getRange(i, 6, 1, 1).getValue();
var subir = hoja.getRange(i, 7, 1, 1).getValue();
// Si tiene URL y la bandera de subida es diferente a verdadero
if(subir != false && url != ""){
fileCabinet.addWebAttachment(nombre, descripcion, url);
hoja.getRange(i, 7, 1, 1).setValue(false);
}
}
hojaCalculo.toast("Éxito",
"Se ha finalizado la carga del listado de documentos al sitio", 5);
}

Similar a la función anterior, debemos autorizar el acceso OAuth a Sites.

Como resultado, si visitamos el sitio podemos apreciar que aparecen los vínculos a los documentos que teníamos en la hoja de cálculo.

Como pudieron apreciar en este ejemplo, Google Apps Script es una herramienta muy simple pero al mismo tiempo poderosa. Ahora imagínen todas las posibilidades que se abren para aplicaciones como flujos de trabajo, notificaciones, monitoreo, entre otras muchas.

Por David Cifuentes, Líder de tecnología, Eforcers S.A.

Suscribirse a: Entradas (Atom)