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

305
Visualizações
¿Cómo codificar el botón "volver a ejecutar la función personalizada" en la función personalizada de Google Sheet?

Tengo el problema que tienen muchos cuando mi código Apps Script en Gsheets no se actualiza automáticamente a menos que registre un cambio en los parámetros. La función personalizada que estoy usando cuenta la cantidad de celdas que están resaltadas en un color específico. Cambiar el color de una celda no vuelve a ejecutar el script. Quería agregar una casilla de verificación en una celda y cada vez que hago clic en ella, vuelve a ejecutar la función.

 function COUNTCOLOR(countRange,colorRef,recalc) { var activeRg = SpreadsheetApp.getActiveRange(); var activeSht = SpreadsheetApp.getActiveSheet(); var activeformula = activeRg.getFormula(); var countRangeAddress = activeformula.match(/\((.*)\,/).pop().trim(); var backGrounds = activeSht.getRange(countRangeAddress).getBackgrounds(); var colorRefAddress = activeformula.match(/\,(.*)\)/).pop().trim(); var BackGround = activeSht.getRange(colorRefAddress).getBackground(); var countCells = 0; for (var i = 0; i < backGrounds.length; i++) for (var k = 0; k < backGrounds[i].length; k++) if ( backGrounds[i][k] == BackGround ) countCells = countCells + 1; return countCells; };

La función funciona, pero solo sin la variable "recalc", que es la variable que necesito para agregar una casilla de verificación para volver a ejecutar el código. Aparece un error: "Rango no encontrado (línea 6)". ¿Algún consejo para hacer que esto funcione?

¡Gracias!

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Una manera más simple

 function COUNTCOLOR(countRange,recalc) { var activeRg = SpreadsheetApp.getActiveRange(); var activeSht = SpreadsheetApp.getActiveSheet(); var activeformula = activeRg.getFormula(); var countRangeAddress = activeformula.match(/\((.*),/).pop().trim(); var backGrounds = activeSht.getRange(countRangeAddress).getBackgrounds(); var backGround = activeRg.getBackground(); var countCells = 0; for (var i = 0; i < backGrounds.length; i++) for (var k = 0; k < backGrounds[i].length; k++) if ( backGrounds[i][k] == backGround ) countCells = countCells + 1; return countCells; };

La referencia de color es el fondo de la celda que contiene la fórmula.

ingrese la descripción de la imagen aquí

about 4 years ago · Juan Pablo Isaza Relatório

0

Funciona para mí de esta manera:

 function COUNTCOLOR(countRange,colorRef,recalc) { var activeRg = SpreadsheetApp.getActiveRange(); var activeSht = SpreadsheetApp.getActiveSheet(); var activeformula = activeRg.getFormula(); var [countRangeAddress,colorRefAddress] = activeformula.match(/\((.*)\)/).pop().split(','); var backGrounds = activeSht.getRange(countRangeAddress).getBackgrounds(); var BackGround = activeSht.getRange(colorRefAddress).getBackground(); var countCells = 0; for (var i = 0; i < backGrounds.length; i++) for (var k = 0; k < backGrounds[i].length; k++) if ( backGrounds[i][k] == BackGround ) countCells = countCells + 1; return countCells; };

Puede agregar trim() a cada variable si lo desea.

Podría ser algo como esto:

 var variables = activeformula.match(/\((.*)\)/).pop().split(','); var countRangeAddress = variables[0].trim(); var colorRefAddress = variables[1].trim();

O puede agregar replace() en la línea para deshacerse de los espacios:

 var [countRangeAddress,colorRefAddress] = activeformula .match(/\((.*)\)/).pop().replace(/\s+/g,'').split(',');
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