Google Script获取Yahoo Finance预期年度股息率报错求助
解决Google Script获取Yahoo Finance预期年度股息率的问题
问题根源与修正方案
你的第一个函数存在两个关键错误:
- URL参数错误:请求URL中
modules=summaryDetail%2C末尾的%2C(即逗号的URL编码)是多余的,会导致Yahoo Finance API无法正确解析模块请求,返回的数据结构不完整。 - JSON路径错误:
dividendRate实际嵌套在summaryDetail对象下,直接访问chain.quotesummary.result[0].dividendRate会找不到对应属性。
修正后的代码
function YahooDivis(ticker) { var ticker = ticker || "PFE"; ticker = encodeURI(ticker); // 移除modules参数末尾的多余逗号 const url = `https://query2.finance.yahoo.com/v10/finance/quoteSummary/${ticker}?modules=summaryDetail`; try { var response = UrlFetchApp.fetch(url); var chain = JSON.parse(response.getContentText()); // 检查API返回是否存在有效结果 if (!chain.quoteSummary || !chain.quoteSummary.result || chain.quoteSummary.result.length === 0) { return "无数据"; } const summaryDetail = chain.quoteSummary.result[0].summaryDetail; // 检查dividendRate是否存在 if (!summaryDetail.dividendRate || !summaryDetail.dividendRate.raw) { return "该股票无预期股息率数据"; } return parseFloat(summaryDetail.dividendRate.raw); } catch (e) { return "请求错误: " + e.message; } }
改动说明
- 清理了URL中无效的逗号编码,确保API正确返回summaryDetail模块数据
- 修正了JSON数据的访问路径,正确定位到
summaryDetail.dividendRate.raw - 添加了
try-catch块和结果存在性检查,避免因API返回异常或无数据导致脚本抛出错误 - 返回友好的提示信息替代直接报错,更适合在Google Sheet中使用
关于第二个函数的说明
你第二个函数调用的/v7/finance/options接口主要用于期权数据,其中的trailingAnnualDividendRate是往绩年度股息率(基于过去已发放的股息计算),并非你需要的预期年度股息率,所以无法得到目标数据,建议使用修正后的第一个函数来获取预期值。
内容的提问来源于stack exchange,提问作者Jarod
相关产品推荐
相关产品推荐

