Google Apps脚本

时间:2014-04-10 10:40:11

标签: xml-parsing google-apps-script

我创建了一个简单的脚本,它读取xml文件并将结果发布到SQL数据库。这非常有效。

我在脚本中添加了一个if语句来识别已经发布到SQL的订单。基本上,如果输入数组中的transactionID高于SQL服务器上的最高transactionID,它会将行值添加到输出数组。

似乎我在这里错过了一个技巧,因为我在尝试将当前xml行与最后一个事务进行比较时遇到“TypeError:无法调用方法”getAttribute“未定义。(第18行,文件”代码“)” ID。

我已经做了一些搜索,虽然我可以看到有类似问题的人,但解释对我来说并没有多大意义。

无论如何,这是代码的相关部分。请注意,如果没有if()位,这一切都可以正常工作。

function getXML() {
  var id = lastTransactionID();
  var xmlSite = UrlFetchApp.fetch("https://api.eveonline.com/corp/WalletTransactions.xml.aspx?KeyID=1111&vCode=1111&accountKey=1001").getContentText();
  var xmlDoc = XmlService.parse(xmlSite);

  var root = xmlDoc.getRootElement();
  var row = new Array();

  row = root.getChild("result").getChild("rowset").getChildren("row");

  var output = new Array();

  var i = 0;
  for (j=0;i<row.length;j++){
    if(row[j].getAttribute("transactionID").getValue()>id){ //Produces: TypeError: Cannot call method "getAttribute" of undefined. (line 18, file "Code")
      output[i] = new Array();
      output[i][0] = row[j].getAttribute("transactionDateTime").getValue();
      output[i][1] = row[j].getAttribute("transactionID").getValue();
      output[i][2] = row[j].getAttribute("quantity").getValue();
      output[i][3] = row[j].getAttribute("typeName").getValue();
      output[i][4] = row[j].getAttribute("typeID").getValue();
      output[i][5] = row[j].getAttribute("price").getValue();
      output[i][6] = row[j].getAttribute("clientID").getValue();
      output[i][7] = row[j].getAttribute("clientName").getValue();
      output[i][8] = row[j].getAttribute("stationID").getValue();
      output[i][9] = row[j].getAttribute("stationName").getValue();
      output[i][10] = row[j].getAttribute("transactionType").getValue();
      output[i][11] = row[j].getAttribute("transactionFor").getValue();
      output[i][12] = row[j].getAttribute("journalTransactionID").getValue();
      output[i][13] = row[j].getAttribute("clientTypeID").getValue();
      i++;
    }
  }
  insert(output,output.length);
}

1 个答案:

答案 0 :(得分:1)

我看到了我的错误并得到纠正。

错误在for循环中。

for(j = 0; i