Proteger Celdas con una condición en Sheets
Вставка
- Опубліковано 19 сер 2024
- ¿Quiere aprender a bloquear una celda en Sheets utilizando AppScript?
En este video, te enseñaré cómo bloquear una celda en Google Sheets utilizando AppScript de manera sencilla y detallada.
Te mostraré cómo acceder a la herramienta AppScript dentro de Google Sheets. Luego, escribiré un script personalizado que nos permitirá bloquear celdas específicas basándonos en ciertas condiciones. Este tutorial te guiará paso a paso, asegurándome de que entiendas cada parte del proceso y puedas replicarlo en tus propias hojas de cálculo.
¿Cómo quitar permisos de edición en dos columnas?
• Cómo Proteger Celdas E...
Aprenda a eliminar todas las protecciones de una hoja. Paso a paso
• Desbloquea Rangos en G...
Super bien tu explicacion, pero me podrias ayudar, en mi caso no tengo un desplegable, solo quiero bloquear la celda cuando un usuario escriba sobre la celda y que otro usuario en ese momento no pueda sobreescribirla. Me podrias ayudar?. Saludos
Hola! le comparto una alternativa que le podría ayudar a proteger sus celdas cuando sean editadas. Saludos
ua-cam.com/video/RNfRqOH4Zu0/v-deo.html
Gracias Broo, me has salvado!!!
Con gusto!! Me alegra saber que le haya sido de ayuda!!
Hola muy buen aporte, veo que se van bloqueando intervalos de celdas, como podría hacer para eliminar de un jalón todos los intervalos bloqueados ya que la misma hoja la tengo que usar cada semana y tengo que eliminar intervalo por intervalo para que puedan volver a seleccionar saludos.
Hola, gracias por comentar. Me alegra saber que le ha sido útil la información.
Aquí le comparto una alternativa que le podría ayudar en su consulta
ua-cam.com/video/qaLQRIzJ_SE/v-deo.html
Hola, Excelente video. Entonces como se haria para bloquear la celda de total si:
Suponiendo que tengo una celda que es la columna de Ingresos y el editor coloca el total de ingreso en esa celda y tengo otra celda en la columna Verificaion con un desplegable con dos opciones, Pendiente de Verificacion y Verificado. Como hago para bloquear la celda de ingresos cuando coloque Verificado en la celda de verificacionm para que el editor no pueda modificar el monto en la celda de la columna de ingresos?
Hola! le comparto como puede bloquear la otra columna cuando se seleccione la una palabra de la lista de validación
Espero que le sea de ayuda. Saludos
ua-cam.com/video/Ft6u54ZFDT0/v-deo.html
Hola! Y si las celdas que quiero bloquear deben llevar fechas diferentes (la fecha en la que se llenó), ¿Cuál sería la constante?
Hola!
Podría ampliar un poco más la idea? en que columna va la fecha y cuáles serían las condiciones.
@@technonets Muchas gracias por tu pronta respuesta.
Hablando de una sheet mía, los usuarios tienen que colocar una fecha en X columna. Esta fecha puede ser cualquiera (a diferencia de tu ejemplo en el que sólo son 2 o 3 opciones).
Mi duda es, ¿Cómo ingreso esa constante (de poder ingresar cualquier fecha) en el appscript y que no se pueda editar la celda posterior a un 1er llenado?
Gracias de antemano
@@carlosizquierdofuentes6215
Para poder proteger la celda mediante el ingreso de una fecha hay que cambiar un poco la lógica del script!
Primero habría que ingresar una validación de datos en la columna donde se va a poner la fecha, que para el ejemplo está en la columna E
1. Seleccionar la columna E
2. Ir a validación de datos y agregar una regla por "Es una fecha válida"
3. Después de lo anterior puede ejecutar el siguiente script que tiene la misma estructura que en el video, solo que la fecha va en la Columna E y se quita la validación por Ingresos o gastos
Espero que le sea de ayuda. Saludos
function protegerCeldas() {
const hoja = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
const colDeseada = 5;
const nombreHojaDeseada = "Contabilidad";
const celdasProtegidas = new Set();
const protecciones = hoja.getProtections(SpreadsheetApp.ProtectionType.RANGE);
protecciones.forEach(proteccion => {
const rango = proteccion.getRange();
celdasProtegidas.add(rango.getA1Notation());
});
if (hoja.getName() === nombreHojaDeseada) {
const celdas = hoja.getRange("E2:E" + hoja.getLastRow()).getValues();
for (let i = 0; i < celdas.length; i++) {
const celda = celdas[i][0];
const celdaActual = hoja.getRange(i + 2, colDeseada);
if (isDate(celda) && !celdasProtegidas.has(celdaActual.getA1Notation())) {
let proteccion = celdaActual.protect();
let editoresActuales = proteccion.getEditors();
for (let j = 0; j < editoresActuales.length; j++) {
proteccion.removeEditor(editoresActuales[j]);
}
celdasProtegidas.add(celdaActual.getA1Notation());
}
}
}
}
function isDate(value) {
return Object.prototype.toString.call(value) === '[object Date]' && !isNaN(value.getTime());
}