En Google Sheets, estoy tratando de eliminar los editores que usan secuencias de comandos de toda la protección, excepto el propietario de la hoja, y para esto estoy usando el siguiente código, pero después de ejecutar el código, se elimina toda la protección, sin embargo, en lugar de eliminar la protección quiero eliminar a todos los usuarios de la protección excepto al propietario de la hoja. Además, cuando se ejecuta el código, solo se elimina una protección a la vez. Quiero aplicarla para toda la protección.
function remove(e) { var sheet = SpreadsheetApp.getActiveSheet(); var protection = sheet.getProtections(SpreadsheetApp.ProtectionType.RANGE)[0]; if (protection && protection.canEdit()) { protection.remove(); }}Cualquier ayuda en lo anterior será apreciada.
Los cambios que debe hacer para que el código solo permita que el propietario de la hoja de cálculo pueda editar un rango protegido ya se incluyeron en la respuesta de Tainake a su pregunta anterior Hoja de Google Eliminar editores después de la primera edición
De la pregunta:
Además, cuando se ejecuta el código, solo se elimina una protección a la vez. Quiero aplicarla para toda la protección.
sheet.getProtections(SpreadsheetApp.ProtectionType.RANGE) devuelve una matriz de objetos. Para eliminar todas las protecciones, su código debería tener que iterar sobre todos los elementos de esta matriz. Una de las muchas formas de hacer esto es usando Array.prototype.forEach , es decir
function remove() { var sheet = SpreadsheetApp.getActiveSheet(); sheet.getProtections(SpreadsheetApp.ProtectionType.RANGE) .forEach(protection => { if (protection && protection.canEdit()) { protection.remove(); } }); }Recursos