繁体   English   中英

Google App脚本:从XML文件提取数据

[英]Google App Script: extract data from a XML file

我需要将此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);
    }
     }
      }

谢谢你的帮助。

有关使用appscript读取特定节点的信息,请查阅此文档

getChild(名称)

获取具有给定名称且没有名称空间的第一个Element节点,该名称空间是此Element节点的直接子级。 如果没有这样的节点,则此方法返回null。

参量

名称类型说明name字符串子元素的名称元素节点返回

Element — Element节点;如果不存在具有给定名称且没有名称空间的直接子Element节点,则为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元素从“ book”,“ title”和“ lang”更改为“ directory”,“ employees”,“ employee”,然后将getAttribute设置为“ id”,将适合您所需的输出。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM