You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google Script获取Yahoo Finance预期年度股息率报错求助

解决Google Script获取Yahoo Finance预期年度股息率的问题

问题根源与修正方案

你的第一个函数存在两个关键错误:

  1. URL参数错误:请求URL中modules=summaryDetail%2C末尾的%2C(即逗号的URL编码)是多余的,会导致Yahoo Finance API无法正确解析模块请求,返回的数据结构不完整。
  2. 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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 17:45:46