Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

289
Vistas
¿Cómo configurar la hoja recién creada como la hoja activa? Hojas de Google

Tengo el problema de que tengo que ejecutar cada script solo debido a que no puedo cambiar a la hoja recién creada generada por la función copyWithProtections, por lo que cuando se ejecuta la siguiente función ClearValueAftercreatingnewsheet, se ejecuta en la hoja activa, no en la recién generada, ¿Hay alguna manera de tener la hoja recién creada como activa?

 /* CAUTION: COPY WITH PROTECTION SHOULD BE RUNNED FIRST THEN CLEARVALUEAFTERCREATING NEW SHEET AFTER MAKING SURE THAT YOU MANUALLY CHANGED THE ACTIVE SHEET TO THE NEW SHEET WITH THE NUMBER */ //Copies with protection function copyWithProtections(){ const sh = SpreadsheetApp.getActiveSpreadsheet(); const ss = sh.getSheetByName("Mar22"); const prot = ss.getProtections(SpreadsheetApp.ProtectionType.RANGE) let nSheet = ss.copyTo(sh).setName(sh.getNumSheets()-1); let p; for (let i in prot){ p = nSheet.getRange(prot[i].getRange().getA1Notation()).protect(); p.removeEditors(p.getEditors()); if (p.canDomainEdit()) { p.setDomainEdit(false); } } } //Clears Values of new sheets function ClearValueAftercreatingnewsheet() { var spreadsheet = SpreadsheetApp.getActive(); spreadsheet.getRange('A2:P144').activate().clear({contentsOnly: true}); spreadsheet.getRange('Z5').activate(); spreadsheet.getCurrentCell().setValue(''); spreadsheet.getRange('Z8').activate(); spreadsheet.getCurrentCell().setValue(''); spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true}); spreadsheet.getRange('A2:Q270').activate(); spreadsheet.getActiveRangeList().setBackground('#deeaf6'); spreadsheet.getRange('A2:R270').activate(); spreadsheet.getActiveRangeList().setBorder(true, true, true, true, true, true, '#000000', SpreadsheetApp.BorderStyle.SOLID); };

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Puede configurar la hoja activa desde el nombre de la hoja. Al hacer su secuencia de comandos en una sola función, puede usar la hoja de salida nSheet recién creada y obtener su nombre usando getSheetName() . Luego puede hacer referencia a él en la parte de valores claros. Pruebe el siguiente código en su lugar:

 function copyAndClear() { //Copies with protection const sh = SpreadsheetApp.getActiveSpreadsheet(); const ss = sh.getSheetByName("Mar22"); const prot = ss.getProtections(SpreadsheetApp.ProtectionType.RANGE) let nSheet = ss.copyTo(sh).setName(sh.getNumSheets() - 1); let p; for (let i in prot) { p = nSheet.getRange(prot[i].getRange().getA1Notation()).protect(); p.removeEditors(p.getEditors()); if (p.canDomainEdit()) { p.setDomainEdit(false); } } //Set the newly created sheet name in a variable to be used for reference var nSheetName = nSheet.getSheetName(); //Clears Values of new sheets var spreadsheet = sh.getSheetByName(nSheetName); spreadsheet.getRange('A2:P144').activate().clear({contentsOnly: true}); spreadsheet.getRange('Z5').setValue(''); spreadsheet.getRange('Z8').setValue(''); spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true}); spreadsheet.getRange('A2:Q270').setBackground('#deeaf6'); spreadsheet.getRange('A2:R270').setBorder(true, true, true, true, true, true, '#000000', SpreadsheetApp.BorderStyle.SOLID); };

También he simplificado su código para evitar la redundancia y acortar el tiempo de ejecución ya que, según su código, no es necesario .activate() si puede configurarlo directamente en una línea.

¡Hazme saber si esto funciona!

También puede configurar la hoja activa por ID, pero el código será mucho más largo. Aquí está la referencia para configurar la hoja activa: https://spreadsheet.dev/activate-sheet-in-google-sheets-using-google-apps-script

EDITAR: he mantenido el .activate() en la primera línea

 spreadsheet.getRange('A2:P144').activate().clear({contentsOnly: true});

como por alguna razón si lo configuro directamente como

 spreadsheet.getRange('A2:P144').clear({contentsOnly: true});

sin .activate() también está borrando la hoja original.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda