我正在更新一些用于使用 Xml.parse
解析此页面的代码 https://www.sec.gov/cgi-bin/browse-edgar?company=&CIK=&type=8-k&owner=exclude&count=100&action=getcurrent
旧代码使用 Xml
来获取像...这样的表
var pageTxt = UrlFetchApp.fetch(target).getContentText();
var pageDoc = Xml.parse(pageTxt,true);
var table = pageDoc.getElement().body.div.table
Xml
已弃用。
function myFunction() {
var rss = "https://www.sec.gov/cgi-bin/browse-edgar?action=getcurrent&CIK=&type=8-k&company=&dateb=&owner=include&start=0&count=40&output=atom"
var r = UrlFetchApp.fetch(rss).getContentText()
var doc = XmlService.parse(r)
var atom = XmlService.getNamespace(rss)
var table = doc.getRootElement().getChildren('summary', atom)
}
现在我正在尝试使用 XmlService
并且在获取同一张表时遇到问题
有人可以帮助获取表格的代码吗?我需要一个数组来循环遍历每个 tr
和 td
。谢谢。
答案 0 :(得分:2)
我相信你的目标如下。
entry
的 XML 数据中检索值,并想使用 Google Apps 脚本将这些值放入电子表格中。https://www.sec.gov/cgi-bin/browse-edgar?action=getcurrent&CIK=&type=8-k&company=&dateb=&owner=include&start=0&count=40&output=atom
的 URL 的数据时,我确认该数据是 XML 数据。entry
。function myFunction() {
// Retrieve the XML data from URL.
var rss = "https://www.sec.gov/cgi-bin/browse-edgar?action=getcurrent&CIK=&type=8-k&company=&dateb=&owner=include&start=0&count=40&output=atom"
var r = UrlFetchApp.fetch(rss).getContentText()
// Parse the XML data.
var doc = XmlService.parse(r)
var root = doc.getRootElement();
var ns = root.getNamespace();
var entries = root.getChildren("entry", ns);
var header = ["title", "link", "summary", "updated", "id"];
var ar = entries.map(e => header.map(f => e.getChild(f, ns).getValue().trim()));
ar.unshift(header);
// Put the value to the active sheet.
var sheet = SpreadsheetApp.getActiveSheet();
sheet.getRange(1, 1, ar.length, ar[0].length).setValues(ar);
}
summary
时,请将var header = ["title", "link", "summary", "updated", "id"];
修改为var header = ["summary"];
我以为在你的情况下,还可以使用内置的IMPORTXML
公式,那么下面的公式呢?
=IMPORTXML("https://www.sec.gov/cgi-bin/browse-edgar?action=getcurrent&CIK=&type=8-k&company=&dateb=&owner=include&start=0&count=40&output=atom","//*[local-name()='entry']")
或者,当您想要检索 summary
的值时,您也可以使用以下公式。
=IMPORTXML("https://www.sec.gov/cgi-bin/browse-edgar?action=getcurrent&CIK=&type=8-k&company=&dateb=&owner=include&start=0&count=40&output=atom","//*[local-name()='summary']")