Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

187
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!