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

191
Visualizações
¿Cómo puedo hacer que una función ignore los números positivos en una hoja de cálculo de Google usando Apps Script?

Para mi rastreador de gastos, una de mis funciones personalizadas en Hojas de cálculo de Google permite a los usuarios ver cuánto han gastado en una marca de ropa. Aquí hay una imagen de la hoja de Google:

Hoja de Google

La siguiente función se utiliza para lograr esto:

 function perCentBrand(brand){ var sh = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); var values = sh.getRange(2,1,sh.getLastRow()-1,sh.getLastColumn()).getValues(); var total = 0; var sum = 0; values.forEach(function(row){ total+=row[1]; if (row[2].toLowerCase() == brand.toLowerCase()){sum+=row[1]} }) var val = "You spent a total of " + (sum*-1) + " on " + brand + " out of " + (total*-1); var ui = SpreadsheetApp.getUi(); ui.alert(val) }

Sin embargo, esta función también tiene en cuenta los números positivos, que se supone que son cifras de ingresos, no cifras de gastos. Por lo tanto, al ejecutar la función, se muestra este mensaje:

Alerta

Como se tienen en cuenta los números positivos, el total dice -270 cuando debería ser 90 . ¿Cómo puedo hacer que la función ignore los números positivos?

Editar:

Alerta después de la respuesta sugerida: Alerta actualizada

Función después de la respuesta sugerida:

 function perCentBrand(brand){ var sh = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); var values = sh.getRange(2,1,sh.getLastRow()-1,sh.getLastColumn()).getValues(); var total = 0; var sum = 0; values.forEach(function(row) { if(row[1] < 0 ) { total+=row[1]; } else if (row[2].toLowerCase() == brand.toLowerCase()){sum+=row[1]} }) var val = "You spent a total of " + (sum*-1) + " on " + brand + " out of " + (total*-1); var ui = SpreadsheetApp.getUi(); ui.alert(val) }
about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

La parte fila[2] debe ser separada si está dentro de la parte (fila[1] < 0). No es un otro si.

 values.forEach(function(row) { if (row[1] < 0) { total+=row[1]; if (row[2].toLowerCase() == brand.toLowerCase()) { sum+=row[1]; } } })
about 4 years ago · Juan Pablo Isaza Relatório

0

Dale una oportunidad a esto:

 function perCentBrand(brand) { const spreadSheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); const values = spreadSheet .getRange(2, 1, spreadSheet.getLastRow() - 1, spreadSheet.getLastColumn()) .getValues(); let total = 0; let sum = 0; values.forEach((row) => { const brandNamesMatch = row[2].toLowerCase() == brand.toLowerCase(); const valueIsAnExpense = row[1] <= 0; if (valueIsAnExpense) { const expenseValue = Math.abs(row[1]); total += expenseValue; if (brandNamesMatch) { sum += expenseValue; } } }); const alertText = `You spent $${sum} out of $${total} on ${brand}`; const modal = SpreadsheetApp.getUi(); modal.alert(alertText); }
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