我一直在尝试用国际股票制作谷歌表格投资组合。我已经成功地使用了“googlefinance”公式,但它并没有涵盖很多国际(美国以外)股票。所以我一直在尝试将它与XPath和雅虎财经相适应。不幸的是,我再次发现我对股票有一些限制。
已测试的 TICKERS(ORCL NVDA LUNR SHELL.AS SIE.DE NESN.SW MSFT TSLA NSRGY NESM.F AAPL.NE ENR.DE AAPL)
我使用的公式是:
=index(IMPORTXML("https://finance.yahoo.com/quote/"&A11,"//*[@class='livePrice svelte-mgkamr']//span"),1)
。
我看到的是,当链接具有“SMTH.SM”时,它不起作用。否则就是这样。但有一件事困扰着我 - SIE.DE 不知何故工作得很好。
有什么想法吗?我希望即使是名称中带有点的股票,我也能够提取信息。 我尝试按原样使用链接(例如https://finance.yahoo.com/quote/SHELL.AS)而不是单元格,但它仍然不起作用。
尝试:
function YAHOO(url) {
const res = UrlFetchApp.fetch(url, {muteHttpExceptions: true});
const htmlContent = res.getContentText();
// Use regex to find the specific span element containing the price
const regex = /<span[^>]*>(.*?)<\/span>/g;
let match;
let price = "Price not found.";
while ((match = regex.exec(htmlContent)) !== null) {
if (match.index === regex.lastIndex) {
regex.lastIndex++;
}
// Check if this span matches the specific path by its surrounding elements
const precedingText = htmlContent.substring(0, match.index);
const followingText = htmlContent.substring(match.index + match[0].length);
if (precedingText.includes('<fin-streamer') && followingText.includes('</fin-streamer>')) {
price = match[1];
break;
}
}
return price;
}
因为导入公式可以关闭(请参阅:https://stackoverflow.com/a/66064380/5632629)