El Reto
Actualmente, almacenamos nuestros contratos y documentos importantes en Google Drive. Mi principal preocupación es la gestión de accesos a estos documentos. Cada vez que alguien necesita acceso, debo otorgarlo manualmente, y algunos miembros del equipo, para ahorrarse este paso, dejan los documentos públicos. Buscamos una solución para mejorar la seguridad y hacerlo más eficaz. Además, me gustaría automatizar el proceso de creación, porque cada documento está personalizado, ya sea para el trabajador, el proveedor o el cliente. Tenemos un «modelo» y lo rellenamos a mano. ¿Se te ocurre qué podemos hacer?
Luis – Ventas
Sobre el planteamiento
Claridad del Problema:
El problema está parcialmente definido. Luis necesita mejorar la gestión de accesos a documentos importantes almacenados en Google Drive y está preocupado por la seguridad debido a que algunos documentos se dejan públicos. Sin embargo, la necesidad de mejorar la seguridad y eficiencia es vaga sin detalles específicos sobre el tipo de solución deseada.
Contexto:
El contexto es limitado. Sabemos que los documentos importantes como contratos personalizados para empleados, proveedores y clientes se almacenan en Google Drive y que actualmente se gestionan manualmente. Sin embargo, faltan detalles sobre el volumen de documentos, la frecuencia de acceso, y la estructura organizativa.
Necesidad:
La necesidad está mencionada pero no está claramente especificada. Luis busca una solución para mejorar la seguridad y la eficiencia en la gestión de documentos, y también quiere automatizar la creación de documentos personalizados. No se menciona si está buscando una herramienta específica, software integrado o algún otro tipo de solución.
Preocupación:
La principal preocupación es la vulnerabilidad de la información confidencial debido a la práctica de dejar documentos públicos y el tedioso proceso manual de otorgar accesos. Luis también está preocupado por la ineficiencia en la creación manual de documentos personalizados.
Evaluación Crítica:
- Claridad del Problema: Aunque se entienden los problemas de seguridad, no está claro qué tipo de solución está buscando Luis.
- Contexto: Información sobre el entorno actual es insuficiente para proponer una solución concreta, lo que nos hace tener que «imaginar» que es lo que le puede servir.
- Necesidad: La necesidad de mejorar seguridad y automatización está presente, pero carece de especificidad.
- Preocupación: Los riesgos de seguridad y la ineficiencia están bien planteados, pero sería útil entender mejor las expectativas de la solución deseada.
“Lo cierto es que cuando vi la respuesta de Gerard me pareció que estaba muy por encima de mis conocimientos. Nunca había usado AppScript y pensé que iba a ser muy complicado. No fue fácil, pero las pautas eran claras y siguiéndolas paso a paso hemos podido gestionar lo que necesitamos como lo necesitamos.”
Luis
Ventas
El proceso
Recepción y Asignación de la Consulta:
Luis envía una consulta sobre la gestión de accesos y la automatización de la creación de documentos en Google Drive. La consulta se asigna a un equipo de consultores especializados en gestión de documentos y seguridad de la información.
Selección del Consultor Responsable:
El equipo evalúa quién tiene la mejor experiencia en gestión de accesos y automatización de procesos en Google Drive. Se selecciona a un consultor con experiencia en seguridad de la información y automatización de documentación.
Análisis y Comprensión del Problema:
El consultor revisa minuciosamente la consulta de Luis para entender completamente sus preocupaciones y necesidades específicas. Se identifican los problemas actuales, como la gestión manual de accesos y la creación manual de documentos personalizados, y se especifican los requisitos del sistema para mejorar la seguridad y la eficiencia.
Orientación para el Desarrollo de la Solución:
El consultor elabora una guía detallada que explica cómo utilizar Google Drive y Google Apps Script para automatizar la gestión de accesos y la creación de documentos. Se proporciona un plan paso a paso para implementar la solución sin necesidad de intervención manual, asegurando que Luis pueda seguir las instrucciones fácilmente.
La Respuesta
Asunto: Solución para la Gestión y Automatización de Documentos en Google Drive
Hola Luis,
Gracias por contactarnos. Me llamo Gerard y soy consultor de seguridad de información. Vamos a ver cómo podemos solucionar tu problema de manera eficiente y segura.
Paso 1: Organizar Google Drive
Crear Estructura de Carpetas:
- Abre Google Drive.
- Crea una carpeta llamada «Documentación Automatizada«.
- Dentro de esta carpeta, crea cuatro subcarpetas: «Modelos«, «Clientes«, «Trabajadores» y «Proveedores«.
Crear Plantillas en Google Docs:
- Abre Google Docs.
- Crea plantillas para los diferentes tipos de documentos (contratos, acuerdos, etc.) o modifica las que ya tengas.
- Usa marcadores de posición para los datos personalizados. Un marcador de posición es un texto dentro de doble llaves (ej. {{Nombre}}, {{Fecha}}) que se reemplazará con la información real cuando se genere el documento. Usa marcadores de posición SIN ESPACIOS (puedes usar guion bajo, ej. {{Nombre_Completo}}) para todos los campos que se modificarán.
- Guarda estas plantillas en la carpeta «Modelos» en Google Drive y anota el ID de cada documento. El ID se encuentra en la URL del documento, por ejemplo:
https://docs.google.com/document/d/ID_DEL_DOCUMENTO
.
Crear una Hoja de Cálculo para Gestionar Plantillas:
- Crea una hoja de cálculo en la carpeta «Documentación Automatizada» llamada «Gestión de Plantillas«.
- En la hoja de cálculo, crea una pestaña llamada «Plantillas«.
- En la columna A, pon el nombre de la plantilla. En la columna B, pon el ID de la plantilla.
Paso 2: Crear un Formulario en Google Forms
Lo que haremos ahora será crear un formulario para crear la información que lanzaremos a los documentos. El formulario servirá para recopilar la información necesaria y generar automáticamente los documentos basados en las plantillas.
Crear el Formulario:
- Abre Google Forms.
- Crea un formulario en blanco.
- Cambia el nombre al formulario por «Formulario Documentos»
- La primera pregunta será un desplegable.
- Créalo y déjalo en blanco de momento.
- En la parte superior del formulario verás tres secciones «Preguntas» (donde estás), «Respuestas» y «Configuración».
- Ve a «Respuestas»
- Haz clic en Vincular con Hojas de cálculo.
- Marca «Seleccionar hoja de cálculo».
- Dale a seleccionar.
- Elige la hoja «Gestión de plantillas».
- Dale a Insertar. (Esto te abrirá tu hoja de cálculo y verás que ha añadido una pestaña llamada «Respuestas de formulario»).
- Ve a la pestaña «Plantillas»
- En el menú superior elige Extensiones -> AppScript (esto te abrirá un editor de código en que debes pegar lo siguiente:
function crearDesplegable() {
var form = FormApp.openById('ID_DEL_FORMULARIO'); // Reemplaza con el ID del formulario
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Plantillas');
var data = sheet.getRange('A:A').getValues();
var items = data.flat().filter(String);
var formItems = form.getItems(FormApp.ItemType.LIST);
var listItem = formItems[0].asListItem();
listItem.setChoiceValues(items);
}
El ID_DEL_FORMULARIO podrás encontrarlo en la url del propio formulario:
https://docs.google.com/forms/d/ID_DEL_FORMULARIO/edit#responses
- Ejecuta el script para cargar las opciones en el formulario
- Completa el formulario con tantas preguntas como campos tengan todas tus plantillas, por ejemplo: Nombre, Apellidos, Dirección… Recuerda los marcadores que pusiste en tus plantillas, vas a tener que rellenarlos con la información que recojas en este formulario, así que es importante que no te dejes ninguna pregunta. Cada pregunta recogerá un campo, así que…
Como ya hemos vinculado la hoja de cálculo para crear el desplegable, sabemos que las respuestas van a ir a la pestaña «Respuestas de formulario» que se creó anteriormente.
Paso 3: Automatizar la cumplimentación de plantillas
Vuelve a tu hoja de cálculo «Gestión de plantillas«, más concretamente a Extensiones -> AppScript y y añade un nuevo Script
Vamos a imaginar que tu formulario tiene 10 preguntas (puede tener tantas como necesites)
Pero que el orden de respuestas es
Desplegable de tipo de documento (Esto sería la columna A), Nombre (Columna B), Apellidos (Columna C), Dirección (Columna D), Código Postal (Columna E), DNI (Columna F)… etc…
(Recuerda que las respuestas estarán en «Respuestas de Formulario» de la hoja de cálculo)
Añade una tercera columna en la pestaña «Plantillas» que contenga el ID de la carpeta de destino para cada plantilla. La columna A sigue siendo el nombre de la plantilla, la columna B el ID de la plantilla, y la columna C el ID de la carpeta de destino (Las que creamos al principio).
Copia y pega esto en tu nuevo script
function onFormSubmit(e) {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Respuestas de formulario');
var row = e.range.getRow();
var formResponses = sheet.getRange(row, 1, 1, sheet.getLastColumn()).getValues()[0];
var templateName = formResponses[0]; // Desplegable de tipo de documento (columna A)
var nombre = formResponses[1]; // Nombre (columna B)
var apellidos = formResponses[2]; // Apellidos (columna C)
var direccion = formResponses[3]; // Dirección (columna D)
var codigoPostal = formResponses[4]; // Código Postal (columna E)
var dni = formResponses[5]; // DNI (columna F)
var email = formResponses[6]; // Email (columna G)
//Añade tantos var como preguntas tenga tu formulario, siempre considerando el formResponses[X], que indicará el número de columna menos 1 (es decir si la columna es la columna P el formResponses sera [15], ya que en estos casos, el índice de columnas no comienza en 1 sino en cero. Así pues la columna A es 0, la B es 1, la C es 2... y así sucesivamente.
// Obtener el ID de la plantilla y el ID de la carpeta desde la hoja de cálculo "Plantillas"
// Obtener el ID de la plantilla y el ID de la carpeta desde la hoja de cálculo "Plantillas"
var templateData = getTemplateData(templateName); // Esto: (templateName) es el nombre de la var que definimos arriba
// Verificar si el ID de la plantilla se ha encontrado
// Verificar si el ID de la plantilla se ha encontrado
if (templateData != null) {
var templateId = templateData.templateId;
var folderId = templateData.folderId;
var doc = DriveApp.getFileById(templateId).makeCopy("Nuevo Documento - " + nombre, DriveApp.getFolderById(folderId));
var docId = doc.getId();
var docFile = DocumentApp.openById(docId);
var body = docFile.getBody();
// Reemplaza los marcadores de posición con las respuestas del formulario
// Reemplaza los marcadores de posición con las respuestas del formulario
body.replaceText("{{Nombre}}", nombre);
body.replaceText("{{Apellidos}}", apellidos);
body.replaceText("{{Dirección}}", direccion);
body.replaceText("{{Código_Postal}}", codigoPostal);
body.replaceText("{{DNI}}", dni);
docFile.saveAndClose();
// Otorga acceso de visualización al nuevo documento
doc.addViewer(email);
} else {
Logger.log("ID de plantilla no encontrado para: " + templateName);
}
}
function getTemplateData(templateName) {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Plantillas');
var data = sheet.getDataRange().getValues();
// Recorrer las filas de la hoja de cálculo "Plantillas"
for (var i = 0; i < data.length; i++) {
if (data[i][0] == templateName) { // Buscar el nombre de la plantilla en la columna A
return {
templateId: data[i][1], // ID de la plantilla (columna B)
folderId: data[i][2] // ID de la carpeta (columna C)
};
}
}
return null; // Devolver null si no se encuentra el nombre de la plantilla
}
Paso 4: Configurar Activadores
- En el editor de scripts, ve a «Activadores» > «Añadir activador».
- Configura el script
onFormSubmit
para ejecutarse al enviar el formulario.
Con esto, todo tu proceso queda automatizado. Sólo te faltaría enviar por correo el documento, si te interesa, y listo.
Sé que parece complicado, pero si sigues las instrucciones paso a paso no deberías tener problemas.
Suerte!
Gerard – Servicios de la información
¿Por qué esa solución y no otra?
Al revisar la consulta de Luis, se consideraron diferentes enfoques para resolver la gestión y automatización de documentos en Google Drive. A continuación, se explica por qué se eligió la solución final y no otras.
-
Uso de Software de Terceros:
Opción Considerada: Utilizar software de terceros especializado en gestión documental para la integración y automatización.
Razón para No Elegirla: Estas herramientas suelen ser caras y requieren suscripciones. Además, por un lado desconocemos la profundidad de uso en la organización de las herramientas de Google, y puede no convenir que abandonen ese ecosistema y estas herramientas pueden no integrarse bien con Google Drive, lo que complicaría el flujo de trabajo y añadiría una curva de aprendizaje adicional.
Solución Elegida: Utilizar Google Apps Script y las funcionalidades nativas de Google Drive.
Razón para Elegirla: Google Apps Script permite una integración directa y personalizada con Google Drive. Es gratuito, flexible y se puede adaptar exactamente a las necesidades de la empresa sin costes adicionales ni dependencia de software externo.
-
Gestión Manual de Documentos:
Opción Considerada: Continuar con la gestión manual de documentos en Google Drive, incluyendo la concesión manual de permisos y la personalización de documentos.
Razón para No Elegirla: La gestión manual es extremadamente laboriosa y propensa a errores humanos. No es eficiente ni sostenible a largo plazo, especialmente con un gran volumen de documentos.
Solución Elegida: Automatizar la gestión de documentos y permisos utilizando Google Apps Script.
Razón para Elegirla: Automatizar estos procesos elimina el riesgo de errores humanos y ahorra tiempo. Además, asegura que los documentos estén siempre gestionados de forma consistente y segura, mejorando la eficiencia y la precisión.
-
Uso de Complementos de Google Drive:
Opción Considerada: Instalar complementos (add-ons) de Google Drive que ofrecen funcionalidades avanzadas para la gestión de documentos y la automatización de tareas.
Razón para No Elegirla: Los complementos pueden ser útiles, pero a menudo vienen con gastos adicionales y posibles problemas de compatibilidad. Además, algunos complementos pueden tener límites de uso o requerir suscripciones, lo que puede no ser ideal para todas las empresas.
Solución Elegida: Implementar una solución utilizando las funciones nativas de Google Drive y Google Apps Script.
Razón para Elegirla: Las funciones nativas de Google Drive y Google Apps Script no consumen recursos económicos extra y son completamente compatibles con todas las funcionalidades de Google Drive. Además, estas funciones son suficientemente robustas para manejar la mayoría de las necesidades de automatización y gestión de documentos.
-
Externalización de la Gestión de Documentos:
Opción Considerada: Contratar un servicio externo para gestionar y actualizar los documentos y permisos.
Razón para No Elegirla: Externalizar puede ser caro y puede no ofrecer la flexibilidad y el control que se necesita para personalizar y ajustar el sistema según las necesidades específicas de la empresa.
Solución Elegida: Utilizar Google Apps Script para mantener el control y la flexibilidad en la gestión de documentos y permisos.
Razón para Elegirla: Permite a la empresa mantener el control completo sobre sus documentos y procesos. Es una solución más económica y adaptable, que puede ser modificada según las necesidades cambiantes sin depender de terceros.
“Cuando hay que guiar a un usuario, siempre es complicado. Trabajas un poco a ciegas con cierta información, como por ejemplo, la experiencia del cliente en el uso de ciertos aplicativos. Personalmente intento siempre ser claro, ir paso a paso y enseñarles, para que puedan reutilizar la respuesta que les doy en futuros escenarios. Hay gente que se atasca y pide soporte extra. En estos casos siempre recomiendo que hagan un «Fly Solo» y nos dejen hacerlo a nosotros. Pero en la mayoría de ocasiones, ellos mismos son capaces de resolver el problema con las pautas adecuadas.”
Gerard
Servicios de la información
elige tu plan
Cuenta con un consultor experto siempre que lo necesites.
Plan Startup
Información
Nuestro Plan Startup es ideal para pequeñas empresas y emprendedores que necesitan orientación experta sin comprometer su presupuesto. Con consultas ilimitadas, siempre tendrás acceso a nuestros consultores para resolver tus dudas y obtener asesoramiento práctico en tiempo real.
Lo que obtienes
EL QUE MÁS ELIGEN
plan profesional
Información
El Plan Professional está diseñado para empresas en crecimiento que requieren un apoyo más profundo. Además de todas las ventajas del Plan Startup, este paquete incluye orientación para la optimización de procesos y la gestión de proyectos. También recibirás sesiones de estrategia personalizadas y acceso prioritario a nuestros consultores.
lo que obtienes
plan premium
información
El Plan Premium es nuestra solución más completa, ideal para empresas que buscan una transformación integral. Incluye todos los beneficios del Plan Professional, además de orientación en estrategias de marketing digital y asesoramiento en integraciones multisistema. Con el Plan Premium, recibirás un enfoque holístico y estratégico para asegurar el éxito continuo de tu empresa.
lo que obtienes
Además, contrates el plan que contrates, si necesitas soporte sobre desarrollo o gestión de procesos tienes acceso a nuestros expertos con precios especiales.
Plan «Fly Solo»
¿Prefieres dejar todo en nuestras manos? El Plan «Fly Solo» es la solución perfecta para aquellos que desean externalizar completamente sus proyectos y necesidades empresariales. Bajo este plan, nos encargamos de todo lo que requieras, brindándote la tranquilidad de saber que estás en manos de expertos.