我在一个单元格中使用它,但是我有很多问题要获取信息,因为很多时候工作表是“加载”的,并且没有加载信息。
=QUERY(IMPORTHTML("http://performance.morningstar.com/Performance/fund/trailing-total-returns.action?t=LU0266117414", "table", 1), "SELECT Col2, Col3, Col4, Col5, Col6, Col7, Col8, Col9 WHERE Col1='LU0266117414' LIMIT 1 LABEL Col2 '', Col3 '', Col4 '', Col5 '', Col6 '', Col7 '', Col8 '', Col9 '' ")因此,我在想,如果读取URL表的字段,问题仍然会比当前使用getcontents读取的问题要少。
就像这样
var url = http://performance.morningstar.com/Performance/fund/trailing-total-returns.action?t=LU0266117414
websiteContent = UrlFetchApp.fetch(url).getContentText()我发现的问题是,我不能只从第一行提取字段。如果它是一个单一的价值,我知道如何做,但有几个同时我还没有达到它。
你知道我怎么能做到吗?
非常感谢
发布于 2021-06-01 11:59:23
我相信你的目标如下。
http://performance.morningstar.com/Performance/fund/trailing-total-returns.action?t=LU0266117414的URL中检索以下值。- `-1.25 3.87 -3.97 -4.76 -0.82 54.78 29.64 28.68`在本例中,下面的示例脚本如何?在这个示例脚本中,为了解析表,我使用了Google脚本的XmlService。
示例脚本:
请将以下脚本复制并粘贴到Google电子表格的脚本编辑器中,并使用脚本编辑器运行myFunction()函数。这样,将检索值并将值作为附加值放到活动表中。
function myFunction() {
var url = "http://performance.morningstar.com/Performance/fund/trailing-total-returns.action?t=LU0266117414";
var websiteContent = UrlFetchApp.fetch(url).getContentText();
var trs = [...websiteContent.matchAll(/<tr class\="action">[\s\S\w]+?<\/tr>/g)];
if (trs.length > 0) {
var obj = XmlService.parse(trs[0][0].replace(/—/g, "-")); // Modified
var values = obj.getRootElement().getChildren("td").map(e => {
var v = e.getValue();
return isNaN(v) ? v : Number(v);
});
values.splice(-2);
SpreadsheetApp.getActiveSheet().appendRow(values)
} else {
throw new Error("Table cannot be retrieved.");
}
}注意:
=SAMPLE("http://performance.morningstar.com/Performance/fund/trailing-total-returns.action?t=LU0266117414")的公式放在一个细胞里。这样,就可以检索值。
函数样例(Url){ var websiteContent = UrlFetchApp.fetch(url).getContentText();var trs = [...websiteContent.matchAll(/\s\S+?<\/tr>/g);if (trs.length > 0) { var obj =XmlService.parse(trs.replace(/-/g,"-"));//修改的var值= obj.getRootElement().getChildren("td").map(e => { var v= e.getValue();返回isNaN(v)?V: Number(v);});values.splice(-2);返回值;} throw {抛出新错误(“无法检索表”);}}http://performance.morningstar.com/Performance/fund/trailing-total-returns.action?t=LU0266117414的URL。因此,当HTML的结构发生更改和/或将其用于其他URL时,该脚本可能无法使用。请小心这个。http://performance.morningstar.com/Performance/fund/trailing-total-returns.action?t=IE00B42W3S00“这样的url有问题。我为http://performance.morningstar.com/Performance/fund/trailing-total-returns.action?t=LU0266117414和http://performance.morningstar.com/Performance/fund/trailing-total-returns.action?t=IE00B42W3S00的两个URL修改了上面的脚本。
参考文献:
https://stackoverflow.com/questions/67786966
复制相似问题