ORDENAR ALFABETICAMENTE UN RANGO PROTEGIDO OTRO EDITOR

49 views
Skip to first unread message

Héctor

unread,
Dec 21, 2022, 7:33:11 AM12/21/22
to Apps Script en Español
Hola a todos.
La idea es que tengo una tabla que quiero compartir con otros editores, donde parte este sin proteger para que puedan poner datos, pero 2 columnas están protegidas. A su vez, una macro asignada a un botón me permite reorganizar alfabéticamente desde las 2 columnas protegidas.
Por tanto, la idea que se me ocurrió, fue que al pulsar el botón para activar la macro, primero me desprotegiera, luego hiciese la ordenación y por último, volviera a proteger esas columnas.
En mi caso funciona bien, porque ves como realiza todos los pasos, pero en el caso de los demás editores no funciona, sale una ventana diciendo que no tiene permisos para modificar esas celdas porque están protegidas.
Os pongo a continuación el código para ver si alguien me puede echar una mano. Gracias.

function ordenarNombresAscendente() {
  desprotegerRango();
  ordenarNombresAscendente1();
  protegerRango5OK();
}

function desprotegerRango(){
  var hoja = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("U1-ENERO");
  var protections = hoja.getProtections(SpreadsheetApp.ProtectionType.RANGE);
  protections[0].remove();
}

function ordenarNombresAscendente1() {

  const libro=SpreadsheetApp.getActiveSpreadsheet();
  const hoja=libro.getActiveSheet()
  const arregloOriginal=hoja.getRange(10,3,hoja.getLastRow()-9,23).getValues()
  arregloOriginal.sort(funcionOrdenarNombresAscendente)
  hoja.getRange(10,3,hoja.getLastRow()-9,23).setValues(arregloOriginal)
  }
   
var funcionOrdenarNombresAscendente=function(a,b){
  if(a[0]>b[0]){return 1}
  else if (b[0]>a[0]){return -1}
  return 0
}

function protegerRango5OK(){
  var hoja = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var rango = hoja.getRange('C10:D65');
  var proteccion = rango.protect();
  proteccion.setDescription("Proteger Rango")
            .removeEditors(['xxxx...@gmail.com']);


}

Omar Raygoza

unread,
Dec 21, 2022, 11:16:03 PM12/21/22
to Apps Script en Español
El problema que veo es de quién corre el GAS y quien tiene permisos para modificarlo.
En escencia, si Pedro tiene bloqueado el acceso a esas columnas, el script corriendo desde Pedro, no podrá modificar los permisos.

Héctor

unread,
Dec 22, 2022, 2:36:40 PM12/22/22
to Apps Script en Español
Después de leer bastante he llegado a esa misma conclusión, aun así gracias por tu contestación.
Estas son las pequeñas diferencias con respecto a excel, que si permite este tipo de cosas. al final, cada uno tiene sus ventajas y sus inconvenientes.

Omar Raygoza

unread,
Dec 23, 2022, 11:50:37 PM12/23/22
to Héctor, Apps Script en Español
He trabajado con Excel y sus macros en VBA y  con GAS y te puedo compartir que, en mi experiencia, GAS tiene más poder que VBA. 
La cosa es ver cómo migrar las funciones, el manejo de arrays en más sencillo (a mi parecer) en GAS que en VBA ya que es más parecido a JS.
Pero si pones algún còdigo de tu VBA, podemos ver cómo trasladarlo a GAS.
Con todo gusto y curiosidad :D ;)

--
Has recibido este mensaje porque estás suscrito al grupo "Apps Script en Español" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a apps-script-en-es...@googlegroups.com.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/apps-script-en-espanol/864d6f6c-0aaa-486e-83a0-6fe165d73240n%40googlegroups.com.


--
Reply all
Reply to author
Forward
0 new messages