如何在Google Apps Script中提取Yahoo Finance XHR复杂对象数据
提取Yahoo Finance季度营收数据的解决方案
以下是修改后的代码,可直接从返回的JSON对象中提取quarterlyTotalRevenue并转换为目标数组格式:
function test() { var ticker = 'JPM'; var url = 'https://query1.finance.yahoo.com/ws/fundamentals-timeseries/v1/finance/timeseries/' + ticker + '?lang=en-US®ion=US&symbol=' + ticker + '&padTimeSeries=true&type=' + '%2cquarterlyTotalRevenue' + '%2c&merge=false&period1=493590046&period2=1672016399&corsDomain=finance.yahoo.com'; var responseText = UrlFetchApp.fetch(url, { muteHttpExceptions: true }).getContentText(); var data = JSON.parse(responseText); // 定位季度营收数据的位置 var quarterlyRevenue = data?.timeseries?.result[0]?.quarterlyTotalRevenue; if (quarterlyRevenue) { // 转换为[{日期: 营收}, ...]的结构化数组 var formattedData = Object.entries(quarterlyRevenue).map(([date, revenue]) => ({ date, revenue })); console.log(formattedData); } else { console.log("未获取到季度营收数据"); } }
核心逻辑说明
- 数据路径定位:Yahoo的API返回结果中,季度营收数据嵌套在
timeseries.result[0].quarterlyTotalRevenue下,这是一个键为日期、值为营收数值的对象。 - 数组格式转换:通过
Object.entries()将键值对拆解为二维数组,再用map()转换为包含日期和营收字段的对象数组。如果需要更简洁的二维数组(比如[["2023-12-31", 38347000000], ...]),可以直接使用Object.entries(quarterlyRevenue)。 - 异常防护:使用可选链操作符
?.避免因API返回结构变化或数据缺失导致的代码报错,同时增加判断逻辑确保数据存在时再执行转换。
内容的提问来源于stack exchange,提问作者Newbie
相关产品推荐
相关产品推荐

