Javascript 用于google电子表格的自定义xml解析函数

Javascript 用于google电子表格的自定义xml解析函数,javascript,xml-parsing,google-apps-script,spreadsheet,Javascript,Xml Parsing,Google Apps Script,Spreadsheet,我试图替换googledocs的importXML函数,因为它只能使用50项 目前的公式是: =ImportXML($K$10,"sum(//row[@typeid='"B1&"']/@quantity)") 其中K10单元格包含一个url,用于获取如下所示的XML: <eveapi version="2"> <currentTime>2012-09-09 09:33:55</currentTime> <result> &

我试图替换googledocs的importXML函数,因为它只能使用50项

目前的公式是:

=ImportXML($K$10,"sum(//row[@typeid='"B1&"']/@quantity)")
其中K10单元格包含一个url,用于获取如下所示的XML:

<eveapi version="2">
  <currentTime>2012-09-09 09:33:55</currentTime>
  <result>
    <rowset name="assets" key="itemID" columns="itemID,locationID,typeID,quantity,flag,singleton">
      <row itemID="1003898262197" locationID="31001059" typeID="17167" quantity="1" flag="0" singleton="1" rawQuantity="-1">
        <rowset name="contents" key="itemID" columns="itemID,typeID,quantity,flag,singleton">
      <row itemID="1003962719504" typeID="253" quantity="3" flag="0" singleton="0"/>
        </rowset>
      </row>
      <row itemID="1003898281453" locationID="31001059" typeID="17408" quantity="1" flag="0" singleton="1" rawQuantity="-1">
        <rowset name="contents" key="itemID" columns="itemID,typeID,quantity,flag,singleton">
      <row itemID="1003962379527" typeID="253" quantity="3" flag="0" singleton="0"/>
        </rowset>
      </row>
      <row itemID="1003908898633" locationID="31001059" typeID="17175" quantity="1" flag="0" singleton="1" rawQuantity="-1"/>
      <row itemID="1003908901859" locationID="31001059" typeID="17174" quantity="1" flag="0" singleton="1" rawQuantity="-1"/>
      <row itemID="1003908954610" locationID="31001059" typeID="17177" quantity="1" flag="0" singleton="1" rawQuantity="-1"/>
    </rowset>
  </result>
  <cachedUntil>2012-09-09 10:20:25</cachedUntil>
</eveapi>
我不知道如何将信息转换成谷歌电子表格的可用格式。如何检索其中一个对象(如typeID、quantity)的某个值,并使用它们检索同一行中的另一个值


非常感谢您的帮助。

这里的关键问题是自定义函数具有非常好的滚动到底的功能。您将无法从那里调用任何标准的电子表格函数。只能返回字符串和数组

更好的方法可能是通过用户操作触发。在电子表格中具有触发相同脚本的图形或菜单

function _retrieveXML() {
  // https://api.eveonline.com/corp/AssetList.xml.aspx?keyID=688782&vCode=q52TpGFTqNCziMMmZ7TYgpXCoGa7U0VBxyH7LuS6Ubtdakbi5t5UDMyf1U5WLpZA&characterID=90127511
  var keyID = "xxxxxx"
  var vCode = "q52TpGFTqNCziMMmZ7TYgpXCoGa7U0VBxyH7LuS6Ubtdakbi5t5UDMyf1U5WLpZA"
  var characterID = "xxxxxxxx"
  var parameters = {
    method : "post",
    payload : "keyID=" + keyID + "&vCode=" + vCode + "&characterID=" + characterID
  };  
  var xmlFeed = UrlFetchApp.fetch("https://api.eveonline.com/corp/AssetList.xml.aspx",parameters);    
  var xmldoc = Xml.parse(xmlFeed.getContentText(), false);
  var records = xmldoc.eveapi.result.rowset.getElements("typeID");  
  var doc = SpreadsheetApp.getActiveSpreadsheet();
  var cell = doc.getRange('a1');
  var index = 0;  
  for (var i in xmldoc) {
    var row = xmldoc[i];
    cell.offset(index, 0).setValue(row[i]);
    }
    index++;
  }