我需要将此XML结构提取到Google电子表格中,
<directory>
<fieldset>
<field id="displayName">Display name</field>
<field id="firstName">First name</field>
</fieldset>
<employees>
<employee id="200">
<field id="displayName">Donald Duck</field>
<field id="firstName">Donald</field>
</employee>
</employees>
</directory>
我已经取消了所有<field id>
,但我只需要<employee id>
而且我不知道该怎么做,请原谅我没有任何关于XML所以请帮助我。
function ImportXML() {
var url = "https://api.Fake.com/employees/directory";
var response = UrlFetchApp.fetch(url, params);
var xml = response.getContentText();
var doc = XmlService.parse(xml);
var root = doc.getRootElement();
logChildren(doc.getRootElement().getChildren());
function logChildren(elements){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];
for (var i = 0; i < elements.length; i++) {
var range = sheet.getRange(1,i+1);
range.setValue(elements[i].getText());
if(elements[i].getContentSize() > 1){
var children = elements[i].getChildren();
logChildren(children);
}
}
}
感谢您的帮助。
答案 0 :(得分:1)
查看有关reading a specific node using appscript
的此文档<强> getChild(名称)强>
获取具有给定名称且没有名称空间的第一个Element节点 是此Element节点的直接子节点。如果没有这样的节点, 此方法返回null。
参数
名称类型描述name字符串子元素节点的名称 返回
元素 - 元素节点,如果没有直接子节点,则为null 具有给定名称且没有名称空间的元素节点
使用此工作示例作为指南。
function readSpecificNode() {
var url = 'https://www.w3schools.com/xml/books.xml';
var xml = UrlFetchApp.fetch(url).getContentText();
var document = XmlService.parse(xml);
var entries = document.getRootElement().getChild('book').getChild('title').getAttribute('lang').getValue();
Logger.log(entries);
}
不要忘记将url
更改为指定的xml,将getChild
元素更改为&#39; book&#39;,&#39; title&#39;和&#39; lang&#39;到&#39;目录&#39;,&#39;员工&#39;员工&#39;然后将getAttribute
设置为&#39; id&#39;所以它适合你想要的输出。