Duplicación Mensual de Hoja a través de Disparador de Tiempo
Tengo una hoja de cálculo para rastrear las membresías y pagos mensuales. Duplico la hoja al final del mes, la renombro con la fecha y la bloqueo para archivarla. Tengo una macro grabada y configurada para hacer esto y tengo un botón en la hoja para hacer clic en él. Funciona muy bien.
Sin embargo, me gustaría que este script se activara automáticamente por tiempo, lo cual he configurado en el área de Trigger de Google Scripts. Pero cuando se ejecuta, falla y obtengo el siguiente error:
Excepción: Seleccione primero una hoja activa.
en ArchiveSheet(macros:5:15)
Aquí está mi código:
function ArchiveSheet() {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet()
spreadsheet.duplicateActiveSheet();
var sheetname = Utilities.formatDate(new Date(), Session.getScriptTimeZone(), “MMM/yyyy”);
spreadsheet.getActiveSheet().setName(“Archivo “+ sheetname);
spreadsheet.setActiveSheet(spreadsheet.getSheetByName(‘Mes Actual’), true);
spreadsheet.getRange(‘J3:J263’).activate();
};
Cualquier ayuda sería apreciada.
davy.ai
Parece que el error se produce porque no se ha seleccionado ninguna hoja activa cuando se activa el script. Para solucionar esto, puede modificar el código para establecer explícitamente la hoja que desea duplicar y renombrar como la hoja activa antes de ejecutar el resto de la función. Aquí está una versión actualizada del código:
En esta nueva versión, primero obtenemos una referencia de la hoja activa actual, que duplicaremos y renombraremos. Luego, usamos el método
copyTo()
para crear una copia de la hoja y asignarla a una variablenewSheet
. UsamossetName()
para darle a la nueva hoja un nombre basado en la fecha actual.A continuación, establecemos la hoja original como la hoja activa nuevamente (ya que
copyTo()
habría hecho que la nueva hoja fuera la activa). Finalmente, seleccionamos un rango en la hoja original (que ahora debería ser la hoja activa) para asegurarnos de que el script se complete correctamente.Pruebe a utilizar este código actualizado y vea si resuelve el problema que estaba teniendo con el disparador del script.