Hoy vamos a hablar de protección de datos. Ya hay un video sobre protección de datos sencilla en Sheets, pero hoy vamos a ir un paso más allá y hacerlo con código, usando macros.
Video
Opciones de Protección
- Proteger una hoja completa: Evita que cualquier usuario no autorizado edite esa hoja.
- Proteger rangos específicos: Permite proteger solo ciertos rangos dentro de una hoja.
- Proteger todo menos un rango específico: Permite proteger toda la hoja excepto un rango específico.
Vamos a implementar estas protecciones usando Google Apps Script.
Crear un Menú Personalizado
Primero, vamos a crear un menú personalizado en Google Sheets para acceder a nuestras funciones de protección.
- Abre el editor de secuencia de comandos (
Herramientas > Editor de secuencia de comandos). - Crea un nuevo proyecto y llámalo
ProtecciónDatos. - Añade el siguiente código para crear el menú:
function onOpen() {
const ui = SpreadsheetApp.getUi();
ui.createMenu('Protección')
.addItem('Proteger esta hoja', 'protegerHojaActiva')
.addItem('Proteger pestaña específica', 'protegerHojaEspecifica')
.addItem('Proteger rango específico', 'protegerRangoEspecifico')
.addItem('Proteger todo menos un rango', 'protegerTodoMenosRango')
.addItem('Desproteger esta hoja', 'desprotegerHojaActiva')
.addItem('Desproteger rangos', 'desprotegerRangos')
.addToUi();
}
Proteger la Hoja Activa
Vamos a crear una función que proteja la hoja en la que estamos trabajando.
function protegerHojaActiva() {
const hoja = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
const proteccion = hoja.protect();
proteccion.setDescription('Protección de hoja activa');
proteccion.removeEditors(['correo@example.com']); // Reemplaza con el correo del usuario que quieres excluir
}
Proteger una Hoja Específica
Esta función protege una hoja específica sin importar en cuál estamos parados.
function protegerHojaEspecifica() {
const hoja = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('NombreDeLaHoja'); // Reemplaza con el nombre de la hoja
const proteccion = hoja.protect();
proteccion.setDescription('Protección de hoja específica');
proteccion.removeEditors(['correo@example.com']); // Reemplaza con el correo del usuario que quieres excluir
}
Proteger un Rango Específico
Esta función protege un rango específico dentro de la hoja activa.
function protegerRangoEspecifico() {
const hoja = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
const rango = hoja.getRange('B2:C4'); // Reemplaza con el rango que quieres proteger
const proteccion = rango.protect();
proteccion.setDescription('Protección de rango específico');
proteccion.removeEditors(['correo@example.com']); // Reemplaza con el correo del usuario que quieres excluir
}
Proteger Todo Menos un Rango
Esta función protege toda la hoja excepto un rango específico.
function protegerTodoMenosRango() {
const hoja = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('NombreDeLaHoja'); // Reemplaza con el nombre de la hoja
const rangoExcepcion = hoja.getRange('B2'); // Reemplaza con el rango que no quieres proteger
const proteccion = hoja.protect();
proteccion.setDescription('Protección excepto un rango');
proteccion.setUnprotectedRanges([rangoExcepcion]);
proteccion.removeEditors(['correo@example.com']); // Reemplaza con el correo del usuario que quieres excluir
}
Desproteger la Hoja Activa
Esta función desprotege la hoja en la que estamos trabajando.
function desprotegerHojaActiva() {
const hoja = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
const protecciones = hoja.getProtections(SpreadsheetApp.ProtectionType.SHEET);
protecciones.forEach(function(proteccion) {
proteccion.remove();
});
}
Desproteger Rangos
Esta función desprotege todos los rangos protegidos dentro de la hoja activa.
function desprotegerRangos() {
const hoja = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
const protecciones = hoja.getProtections(SpreadsheetApp.ProtectionType.RANGE);
protecciones.forEach(function(proteccion) {
proteccion.remove();
});
}
Conclusión
Con estas funciones, podemos proteger y desproteger hojas y rangos específicos en Google Sheets utilizando Google Apps Script. Esto nos permite tener un mayor control sobre quién puede editar qué partes de nuestra hoja de cálculo.
Espero que este tutorial les haya sido útil. Si tienen alguna pregunta o sugerencia, no duden en dejar un comentario.