Estoy usando el siguiente script en Hojas de cálculo de Google para recuperar ciertas propiedades de la empresa (restringidas por el símbolo de cotización) (en JSON) de Yahoo! Finance y presentarlas en celdas adyacentes en la hoja.
Estoy recuperando 3 propiedades; esta lista se ampliará en el futuro. Actualmente estoy tratando de lograr un manejo adecuado de errores.
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 "-"; } } El problema es: si una determinada propiedad no existe para un determinado símbolo, Google Sheets devuelve un error: #Error TypeError: Cannot read property 'marketCap' of undefined (line 43).
Mi pregunta es: ¿cómo puedo devolver un - (guión) en este caso?
Reemplace la línea de código por
const marketCap = summaryDetail.marketCap == null ? '-' : summaryDetail.marketCap.fmt;