Xml 数据中的列数与范围中的列数不匹配(数据有12列,但范围有11列)

Xml 数据中的列数与范围中的列数不匹配(数据有12列,但范围有11列),xml,google-apps-script,cisco,Xml,Google Apps Script,Cisco,我正在构建一个函数,该函数应该获取XML响应的元素,并将元素的每个迭代存储在电子表格中它自己的行中,直到所有元素都被考虑在内。这是有效的,直到有超过500个帐户被返回(请参阅API信息)。然后,我接收到数据中的列数与范围中的列数不匹配。数据有12个,但范围有11个。请看下面我的代码,谢谢您的时间和帮助 function testPOST(e) { var url = "https://api.webex.com/WBXService/XMLService"; var payload

我正在构建一个函数,该函数应该获取XML响应的元素,并将元素的每个迭代存储在电子表格中它自己的行中,直到所有元素都被考虑在内。这是有效的,直到有超过500个帐户被返回(请参阅API信息)。然后,我接收到数据中的列数与范围中的列数不匹配。数据有12个,但范围有11个。请看下面我的代码,谢谢您的时间和帮助

function testPOST(e) {

  var url = "https://api.webex.com/WBXService/XMLService";

  var payload = e;

  var options =
      {
        "method"  : "POST",
        "payload" : payload,   
        "followRedirects" : true,
        "muteHttpExceptions": true
      };

  var result = UrlFetchApp.fetch(url, options);

  if (result.getResponseCode() == 200) {
    //    var od = XmlService.parse(result),
    //        pm = XmlService.getPrettyFormat().format(od);
    //    Logger.log(pm);
    Logger.log(result.getResponseCode() + "\n\n");

    /* Preferred Approach */  
    var ss = SpreadsheetApp.openById("ID").getSheetByName("Output");

    var header = [],
        values = [],
        root = XmlService.parse(result).getRootElement(),
        c1 = root.getChildren();
    for(var i = 0; i < c1.length;i++){
      if (c1[i].getName() == "body") {
        var c2 = c1[i].getChildren()[0].getChildren();
        for (var j = 0; j < c2.length; j++) {
          if (c2[j].getName() == "user") {
            var c3 = c2[j].getChildren();
            var temp = [];
            for (var k = 0; k < c3.length; k++) {
              if (j == 0) header.push(c3[k].getName());
              temp.push(c3[k].getValue());
            }
            values.push(temp);
          }
        }
      }
    }
    values.unshift(header);

    Logger.log(values);

    ss.getRange(1, 1, values.length, values[0].length).setValues(values);

  }
  else
  {
    Logger.log("\nFAILED ERROR:\n" + result.getContentText());
  }

}


function myFuction() {

  var siteName = "SITE",
      webexID = "ADMIN",
      pwd = "PASSWORD",
      startFrom = 0;

  var xmlst = '<?xml version="1.0" encoding="UTF-8"?>';

  var xmlbdy = '<message xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">'
  +'<header><securityContext>'
  +'<siteName>'+siteName+'</siteName>'
  +'<webExID>'+webexID+'</webExID>'
  +'<password>'+pwd+'</password>'
  +'</securityContext></header>'
  +'<body><bodyContent xsi:type="java:com.webex.service.binding.user.LstsummaryUser">'
  +'<listControl><startFrom>1</startFrom><maximumNum>500</maximumNum><listMethod>AND</listMethod></listControl>'
  +'<order><orderBy>UID</orderBy><orderAD>ASC</orderAD></order>'
  +'<active>ACTIVATED</active>'
  +'<dataScope></dataScope>'
  +'</bodyContent></body></message>';

  xmlst += xmlbdy;

  var document = XmlService.parse(xmlst);
  var output = XmlService.getPrettyFormat().format(document);

  //  Logger.log("\n" + output + "\n\n\n");
  testPOST(output);
}
功能测试柱(e){
变量url=”https://api.webex.com/WBXService/XMLService";
var有效载荷=e;
var期权=
{
“方法”:“发布”,
“有效载荷”:有效载荷,
“followRedirects”:正确,
“muteHttpExceptions”:true
};
var result=UrlFetchApp.fetch(url,选项);
if(result.getResponseCode()==200){
//var od=XmlService.parse(结果),
//pm=XmlService.getPrettyFormat().format(od);
//Logger.log(pm);
Logger.log(result.getResponseCode()+“\n\n”);
/*首选方法*/
var ss=SpreadsheetApp.openById(“ID”).getSheetByName(“输出”);
var头=[],
值=[],
root=XmlService.parse(result).getRootElement(),
c1=根目录。getChildren();
对于(变量i=0;i
试试这样吧

function testPOST(e) {
  var url = "https://api.webex.com/WBXService/XMLService";
  var payload = e;
  var options={"method"  : "POST","payload" : payload,"followRedirects" : true,"muteHttpExceptions": true};
  var result = UrlFetchApp.fetch(url, options);
  var lA=[];
  if (result.getResponseCode() == 200) {
    Logger.log(result.getResponseCode() + "\n\n");
    var ss=SpreadsheetApp.openById("ID").getSheetByName("Output");
    var header=[],values=[],root=XmlService.parse(result).getRootElement(),c1 = root.getChildren();
    for(var i=0;i<c1.length;i++){
      if (c1[i].getName() == "body") {
        var c2=c1[i].getChildren()[0].getChildren();
        for (var j=0;j<c2.length;j++) {
          if (c2[j].getName()=="user") {
            var c3 = c2[j].getChildren();
            var temp = [];
            for (var k=0;k<c3.length;k++) {
              if (j==0)header.push(c3[k].getName());
              temp.push(c3[k].getValue());
            }
            values.push(temp);
            lA.push(temp.length);
          }
        }
      }
    }
    values.unshift(header);
    Logger.log(values);
    var lnth=lA.sort(function(a,b){return b-a;})[0];
    ss.getRange(1,1,values.length,lnth).setValues(values);
  }
  else
  {
    Logger.log("\nFAILED ERROR:\n" + result.getContentText());
  }

}
功能测试柱(e){
变量url=”https://api.webex.com/WBXService/XMLService";
var有效载荷=e;
var options={“method”:“POST”,“payload”:payload,“followRedirects”:true,“muteHttpExceptions”:true};
var result=UrlFetchApp.fetch(url,选项);
var lA=[];
if(result.getResponseCode()==200){
Logger.log(result.getResponseCode()+“\n\n”);
var ss=SpreadsheetApp.openById(“ID”).getSheetByName(“输出”);
var header=[],values=[],root=XmlService.parse(result).getRootElement(),c1=root.getChildren();

对于(var i=0;i要解决此问题,请确保最后一列中的数据不会直接延伸到下一列。在本例中,数据为3,范围为3。但是,由于最后一列中的数据延伸到下一列,因此数据为4,范围为3

错误说明: 若要修复此错误,请将最后一列的宽度扩展到最后一列中的所有数据都位于最后一列中且不重叠到下一列的位置

解决方案说明:

尝试类似
var errorLine;values.every(function(row,i){errorLine=i;return row.length==12});Logger.log({line:errorLine,row:values[errorLine]})
列的宽度与此错误无关。