如何在Google Sheets中获取NSE股票开盘收盘价?解决Google Finance数据错误
问题描述
- 在Google Sheets中尝试用公式获取指定股票(如RELIANCE.NS)的开盘/收盘价时出现异常:
- 原使用公式:
=INDEX(GOOGLEFINANCE(B2, "open", A2), 2, 2),返回错误提示:Error When evaluating GOOGLEFINANCE, the query for the symbol: 'RELIANCE.NS' returned no data.
或直接显示#N/A - 后续尝试的IMPORTXML公式均未生效:
=IMPORTXML("https://www.investing.com/equities/reliance-industries-historical-data", "//table[@id='curr_table']/tbody/tr[1]/td[2]")=INDEX(IMPORTXML("https://www.moneycontrol.com/financials/relianceindustriesindianagrasp/opening-priceRI", "//div[@class='value_txtfl fl gL_10 uc']/span[1]"),1)
- 原使用公式:
可行解决方案
修复GOOGLEFINANCE公式
- 校准日期格式:A2单元格的日期必须是Google Sheets可识别的标准格式(如
YYYY-MM-DD),避免使用文本格式的日期字符串。 - 确认股票代码:确保B2中填写的代码为
RELIANCE.NS(后缀.NS对应印度NSE交易所,大小写不影响,但后缀不可省略)。 - 分步调试公式:先单独执行
=GOOGLEFINANCE("RELIANCE.NS", "open", DATE(2024,5,20))测试数据源是否正常,确认返回数组后,再嵌套INDEX(...,2,2)提取数值。
调整IMPORTXML/IMPORTHTML公式
部分网站会动态加载数据或更新HTML结构,导致原XPATH失效,可尝试以下适配方案:
- Investing.com替代方案:改用
IMPORTHTML抓取表格数据,稳定性更高:=INDEX(IMPORTHTML("https://www.investing.com/equities/reliance-industries-historical-data", "table", 1),2,2)
注:table,1定位页面第一个表格,2,2提取表头后第一行的第二列(对应开盘价)。 - Moneycontrol适配方案:重新定位页面元素的XPATH,例如:
=INDEX(IMPORTXML("https://www.moneycontrol.com/financials/relianceindustries/opening-priceRI", "//span[@class='inp_val']"),1)
注:需通过浏览器开发者工具确认当前页面开盘价元素的最新属性,调整XPATH匹配规则。
额外注意事项
- Google Sheets的外部数据函数存在调用频率限制,短时间内大量刷新可能触发临时限制。
- 部分网站会拦截Google Sheets的爬虫请求,导致IMPORT类函数失效,此时优先使用GOOGLEFINANCE(官方对接的数据源稳定性更强)。
内容的提问来源于stack exchange,提问作者ni9khil
相关产品推荐
相关产品推荐

