簡體   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