¿Alguien puede ayudarme a arreglar el siguiente código?
Uso este script para deshabilitar el editor para copiar mi hoja de cálculo de Google
function onOpen () { const ss = SpreadsheetApp.getActive(); const id = ss.getId(); if (id !== '1ld8aPE5zVBYoT39WPzZjWxU1uHJ8lVVV5vkBiv5USzI') ss.getSheets().forEach((s) => ss.deleteSheet(s)); }Referencia.
Inhabilitar copia de hoja de cálculo - Hojas de cálculo de Google
Intenté copiar a otra hoja de trabajo pero el código no funciona
Ejemplo https://drive.google.com/drive/folders/11Jqh_xaw0CdI1cBUL_hZwCjOJNnRKSU6?usp=sharing
Tl;Dr No hay forma de evitar que los editores de hojas de cálculo copien la hoja de cálculo, por eso, para evitar que los editores copien la hoja de cálculo, debe utilizar otro enfoque para lo que sea que esté haciendo con su hoja de cálculo.
Con respecto al código en la pregunta, no deshabilita la copia de la hoja de cálculo, lo que hace es, si la identificación de la hoja de cálculo no es igual a cierto valor, itera sobre todas las hojas pero como no es posible eliminar todas las hojas como debería hacerlo cada hoja de cálculo incluye al menos una hoja, el script arroja un error. Puede cambiar la secuencia de comandos, es decir, insertar una nueva hoja y eliminar las otras hojas, pero el editor de la hoja de cálculo original, ya que es el propietario de la copia, podrá eliminar la secuencia de comandos y restaurar los datos eliminados del historial de versiones. de la nueva hoja de cálculo.
Relacionado
Al menos, puede agregar una hoja con una alerta y eliminar todas las demás hojas
var id = '1ld8aPE5zVBYoT39WPzZjWxU1uHJ8lVVV5vkBiv5USzI' function onOpen() { var ss = SpreadsheetApp.getActiveSpreadsheet() if (ss.getId() != id) { var gid = ss.insertSheet().getSheetId() ss.getSheets().forEach(function (sh) { if (sh.getSheetId() != gid) { ss.deleteSheet(sh) } }) } }¡No estoy seguro de que no haya derivación! Ver el consejo de Rubén.