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

188
Vistas
Reemplace el resultado vacío proveniente de JSON con valor

Estoy usando el siguiente script en Hojas de cálculo de Google para obtener un objeto JSON de Yahoo! Finance para ciertas empresas:

 function yahooFinance(symbol) { const url = 'https://query2.finance.yahoo.com/v10/finance/quoteSummary/' + encodeURI(symbol) + '?modules=price,assetProfile,summaryDetail,incomeStatementHistory,' + 'balanceSheetHistory,defaultKeyStatistics,financialData,calendarEvents,' + 'recommendationTrend,upgradeDowngradeHistory,majorHoldersBreakdown' ; const response = UrlFetchApp.fetch(url, { muteHttpExceptions: true }); const responseCode = response.getResponseCode(); if (responseCode === 200) { const quote = JSON.parse(response.getContentText()); return [[ quote.quoteSummary.result[0].summaryDetail.dividendYield.fmt, quote.quoteSummary.result[0].summaryDetail.payoutRatio.fmt, quote.quoteSummary.result[0].summaryDetail.marketCap.fmt ]]; } else { return "-"; } }

Regularmente, sin embargo, para una o más claves, el valor estará vacío. En tal caso, el JSON devuelve (una cadena vacía). Sin embargo, cada vez que hay una cadena vacía, me gustaría devolver un regreso - la hoja para indicar que la consulta salió bien, sin embargo, no se devolvió ningún valor.

Así que intenté actualizar de la siguiente manera (ver la declaración if ):

 function yahooFinance(symbol) { const url = 'https://query2.finance.yahoo.com/v10/finance/quoteSummary/' + encodeURI(symbol) + '?modules=price,assetProfile,summaryDetail,incomeStatementHistory,' + 'balanceSheetHistory,defaultKeyStatistics,financialData,calendarEvents,' + 'recommendationTrend,upgradeDowngradeHistory,majorHoldersBreakdown' ; const response = UrlFetchApp.fetch(url, { muteHttpExceptions: true }); const responseCode = response.getResponseCode(); if (responseCode === 200) { const quote = JSON.parse(response.getContentText()); return [[ (if (quote.quoteSummary.result[0].summaryDetail.dividendYield.fmtr) quote.quoteSummary.result[0].summaryDetail.dividendYield.fmt), quote.quoteSummary.result[0].summaryDetail.payoutRatio.fmt, quote.quoteSummary.result[0].summaryDetail.marketCap.fmt ]]; } else { return "-"; } }

Aparentemente, no puedo poner una declaración if dentro de una matriz. ¿Cómo puedo verificar cada uno de los 3 valores que estoy devolviendo ( dividendYield , payoutRatio , marketCap ) si están vacíos y, de ser así, devolver - ?

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

0

Así es como lo haría. Además, hace que su código sea más limpio. el || funciona como un if/else. Si se define el primer valor, usará ese, si no, usará el "-"

 function yahooFinance(symbol) { const url = 'https://query2.finance.yahoo.com/v10/finance/quoteSummary/' + encodeURI(symbol) + '?modules=price,assetProfile,summaryDetail,incomeStatementHistory,' + 'balanceSheetHistory,defaultKeyStatistics,financialData,calendarEvents,' + 'recommendationTrend,upgradeDowngradeHistory,majorHoldersBreakdown' ; const response = UrlFetchApp.fetch(url, { muteHttpExceptions: true }); const responseCode = response.getResponseCode(); if (responseCode === 200) { const quote = JSON.parse(response.getContentText()); const summaryDetail = quote.quoteSummary.result[0].summaryDetail; const divYield = summaryDetail.dividendYield.fmt || "-"; const payoutRatio = summaryDetail.payoutRatio.fmt || "-"; const marketCap = summaryDetail.marketCap.fmt || "-"; return [[ divYield , payoutRatio, marketCap ]]; } else { return "-"; } }
about 4 years ago · Juan Pablo Isaza Denunciar

0

¿Con encadenamiento opcional ?. , la evaluación se detiene cuando se encuentra un valor nulo. Piensa en usarlo de esta manera:

 potentially_nullish_thing?.prop_or_index_or_function

Si la cosa potentially_nullish_thing no es nula o no está definida, la prop_or_index_or_function se ejecuta como cabría esperar. De lo contrario, toda la expresión se evalúa como indefinida.

Entonces, para el OP, empareje eso con el lógico o || para obtener una cadena predeterminada si falta algo en la ruta a los datos reales.

 quote?.quoteSummary?.result?.[0]?.summaryDetail?.dividendYield?.fmt || '-', // so on for the others
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