получить значение атрибута мыла google appscript - PullRequest
0 голосов
/ 08 мая 2018

играл с этим некоторое время, но, кажется, не могу понять это.Я хочу получить тег TotalScore, но текущий код генерирует ошибку TypeError: Невозможно вызвать метод "getChildren" со значением NULL.нужна помощь.ниже мой текущий код:

 function getDriverScores () {

 var xml = 

   "<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" 
    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" 
     xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">"
      +"<soap:Body>"
      +   "<GetDriverScoresInDateRangeResponse 
         xmlns=\"http://www.omnibridge.com/SDKWebServices/AssetData\">"
      +      "<GetDriverScoresInDateRangeResult>"
      +         "<DriverScore>"
      +            "<DriverID>4</DriverID>"
      +            "<OverallScore>99.05209</OverallScore>"
      +            "<Distance>7283.8</Distance>"
      +            "<Duration>683800</Duration>"
      +            "<OverSpeedingScore>100</OverSpeedingScore>"
      +            "<OverRevvingScore>100</OverRevvingScore>"
      +            "<HarshBrakingScore>100</HarshBrakingScore>"
      +            " 
          <OutOfGreenBandDrivingScore>99.64171</OutOfGreenBandDrivingScore>"
      +            "<ExcessiveIdlingScore>94.67081</ExcessiveIdlingScore>"
      +            "<HarshAccelerationScore>100</HarshAccelerationScore>"
      +         "</DriverScore>"
      +      "</GetDriverScoresInDateRangeResult>"
      +   "</GetDriverScoresInDateRangeResponse>"
      +"</soap:Body>"
      +"</soap:Envelope>"


      var options =
      {
      "method" : "post",
      "contentType" : "text/xml",
      "payload" : xml,
      muteHttpExceptions:true
      };


     var xmlResult = XmlService.parse(xml).getRootElement();
     var soapNamespace = xmlResult.getNamespace("soap");
     var GetDriverScoresInDateRangeResponse = xmlResult.getChild("Body", 
     soapNamespace).getChildren()[0];
     var GetDriverScoresInDateRangeResponseNamespace = 
     GetDriverScoresInDateRangeResponse.getNamespace();

    var DriverScore = 
    GetDriverScoresInDateRangeResponse.getChild("DriverScore", 
    GetDriverScoresInDateRangeResponseNamespace).getText();

    Logger.log(DriverScore);

    }

1 Ответ

0 голосов
/ 09 мая 2018

Как насчет этой модификации? Я думаю, что есть несколько модификаций, поэтому, пожалуйста, подумайте об этом как об одной из них.

Очки модификации:

  • Получить DriverScore, используя GetDriverScoresInDateRangeResponseNamespace.getChildren()[0].
  • Получить OverallScore, используя полученный DriverScore.

Модифицированный скрипт:

var xmlResult = XmlService.parse(xml).getRootElement();
var soapNamespace = xmlResult.getNamespace("soap");
var GetDriverScoresInDateRangeResponse = xmlResult.getChild("Body", soapNamespace).getChildren()[0];
var GetDriverScoresInDateRangeResponseNamespace = GetDriverScoresInDateRangeResponse.getChildren()[0];
var GetDriverScoresInDateRangeResult = GetDriverScoresInDateRangeResponseNamespace.getChildren()[0];
var DriverScore = GetDriverScoresInDateRangeResult.getChildren();
DriverScore.forEach(function(e){
  var name = e.getName()
  if (name == "OverallScore") {
    Logger.log("%s, %s", name, e.getText()) // OverallScore, 99.05209
  }
});

Примечание:

  • xml вашего скрипта было использовано для этого модифицированного скрипта.

Если я неправильно понимаю ваш вопрос, извините.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...