Registro Histórico de Cambios en Google Sheets con Google Apps Script

Hoy vamos a hacer un registro histórico de cambios en Google Sheets. Este registro será personalizado, permitiéndote controlar qué información deseas registrar y cómo deseas visualizarla. Vamos a crear un registro de cambios que documente cada modificación en una hoja específica, mostrando el usuario que hizo el cambio, la celda modificada, el valor antiguo y nuevo, y la fecha del cambio.

Por qué crear un registro personalizado

Google Sheets tiene una función de historial de cambios, pero puede ser excesiva para ciertas necesidades. Con nuestro propio registro, tendremos control total sobre qué registrar y cómo mostrarlo, incluyendo:

  • Qué hojas y celdas registrar.
  • Si incluir o no la fecha y el usuario.
  • Aplicar condiciones específicas para registrar solo ciertos cambios.

Paso a Paso: Creando el Registro Histórico de Cambios

Paso 1: Configurar el Script de Google Apps Script

  1. Abrir el Editor de Apps Script: Ve a Extensiones > Apps Script en tu Google Sheets.
  2. Crear la función onEdit:
function onEdit(e) {
  registrarCambios(e);
}
  1. Crear la función para registrar los cambios:
function registrarCambios(e) {
  var hojaRegistro = e.source.getSheetByName('Registro');
  var hojaEditada = e.range.getSheet().getName();

  if (hojaEditada == 'Registro') return; // Evita registrar cambios en la hoja de registro

  var direccion = e.range.getA1Notation();
  var valorNuevo = e.value;
  var valorViejo = e.oldValue || "";
  var fechaEdicion = new Date();
  var usuario = Session.getActiveUser().getEmail();

  hojaRegistro.appendRow([hojaEditada, direccion, valorViejo, valorNuevo, fechaEdicion, usuario]);
}

Paso 2: Crear la Hoja de Registro

  1. Crear una nueva hoja llamada Registro:
  • Abre un nuevo archivo en Google Sheets.
  • Agrega una nueva hoja y nómbrala Registro.
  • Agrega los siguientes encabezados en la primera fila:
    • Hoja Editada
    • Rango Editado
    • Valor Viejo
    • Valor Nuevo
    • Fecha de Edición
    • Usuario

Paso 3: Probar el Script

  1. Realizar Cambios en las Hojas:
  • Abre una hoja diferente a la de Registro.
  • Realiza algún cambio en una celda.
  • Ve a la hoja Registro y verifica que el cambio se haya registrado correctamente.

Paso 4: Refinar el Script

  1. Agregar Validaciones y Mejoras:
  • Asegúrate de que los cambios en la hoja Registro no se registren.
  • Añade condiciones para registrar solo ciertos tipos de cambios.
function registrarCambios(e) {
  var hojaRegistro = e.source.getSheetByName('Registro');
  var hojaEditada = e.range.getSheet().getName();

  if (hojaEditada == 'Registro') return; // Evita registrar cambios en la hoja de registro

  var direccion = e.range.getA1Notation();
  var valorNuevo = e.value;
  var valorViejo = e.oldValue || "";
  var fechaEdicion = new Date();
  var usuario = Session.getActiveUser().getEmail();

  // Filtrar cambios en ciertas celdas, hojas, o valores
  if (direccion == "A1" && hojaEditada == "Hoja1") return; // Ejemplo de filtro

  hojaRegistro.appendRow([hojaEditada, direccion, valorViejo, valorNuevo, fechaEdicion, usuario]);
}

Paso 5: Implementar Condiciones Avanzadas (Opcional)

  1. Filtrar Cambios por Usuario, Hora, etc.:
  • Agrega más condiciones en la función registrarCambios para registrar solo ciertos cambios.
function registrarCambios(e) {
  var hojaRegistro = e.source.getSheetByName('Registro');
  var hojaEditada = e.range.getSheet().getName();

  if (hojaEditada == 'Registro') return; // Evita registrar cambios en la hoja de registro

  var direccion = e.range.getA1Notation();
  var valorNuevo = e.value;
  var valorViejo = e.oldValue || "";
  var fechaEdicion = new Date();
  var usuario = Session.getActiveUser().getEmail();

  // Filtrar cambios en ciertas celdas, hojas, valores, usuarios, etc.
  if (direccion == "A1" && hojaEditada == "Hoja1") return; // Ejemplo de filtro
  if (usuario == "correo@dominio.com") return; // Ejemplo de filtro por usuario

  hojaRegistro.appendRow([hojaEditada, direccion, valorViejo, valorNuevo, fechaEdicion, usuario]);
}

Conclusión

¡Y eso es todo! Hemos creado un registro histórico de cambios en Google Sheets que te permite controlar exactamente qué se registra y cómo se visualiza. Este registro es una herramienta poderosa para monitorear y auditar cambios en tus hojas de cálculo de manera personalizada.

Si te ha gustado este tutorial, no olvides suscribirte al canal y dejar tus comentarios.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Pin It on Pinterest

Share This