Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

294
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda