0

我使用以下循環和Google Scripts解析XML文件,但是其中一個位置的XML文件中缺少一個Childs。所以整個過程返回一個空值。我如何檢索所有不爲空的數據?Google Sheet腳本在循環過程中爲空錯誤

> function stugas() { 
> var live = new Array(); 
> var url ="http://xml.pinnaclesports.com/pinnacleFeed.aspx?sportType=Football&contest=no&sportSubType=NFL"; 
> var parameters = {method : "get", payload : ""}; var xml = 
> UrlFetchApp.fetch(url, parameters).getContentText(); 
> var document = XmlService.parse(xml); 
> var games = document.getRootElement().getChild('events').getChildren('event'); 
> if(document == null) { 
>  document.getRootElement().getChild('events').getChildren('event'); } for (var i=0; i < games.length; i++) { 
>  vegas=[games[i].getChildText('event_datetimeGMT'),games[i].getChild('participants').getChildren('participant')[0].getChildText('participant_name'), 
>     games[i].getChild('participants').getChildren('participant')[0].getChildText('visiting_home_draw'), 
>     games[i].getChild('participants').getChildren('participant')[1].getChildText('participant_name'), 
>     games[i].getChild('participants').getChildren('participant')[1].getChildText('visiting_home_draw'), 
>     /**games[i].getChild('periods').getChildren('period')[0].getChild('moneyline').getChildText('moneyline_visiting'), 
>     games[i].getChild('periods').getChildren('period')[0].getChild('moneyline').getChildText('moneyline_home'),**/ 
>     games[i].getChild('periods').getChildren('period')[0].getChild('spread').getChildText('spread_visiting'), 
>     games[i].getChild('periods').getChildren('period')[0].getChild('spread').getChildText('spread_home'), 
>     games[i].getChild('periods').getChildren('period')[0].getChild('spread').getChildText('spread_adjust_visiting'), 
>     games[i].getChild('periods').getChildren('period')[0].getChild('spread').getChildText('spread_adjust_home'), 
>     games[i].getChild('periods').getChildren('period')[0].getChild('total').getChildText('total_points'), 
>     games[i].getChild('periods').getChildren('period')[0].getChild('total').getChildText('over_adjust'), 
>     games[i].getChild('periods').getChildren('period')[0].getChild('total').getChildText('under_adjust')] 
>  
>  
>  live.push(vegas); 
>  } 
>  return live; } 

回答

2

如果你寫你的內部循環這種方式,那麼你可以測試每個元素,看看他們是否存在或者不(這樣做的moneyline這裏只):

vegas = []; 
var game = games[i]; 
vegas.push(game.getChildText('event_datetimeGMT')); 
var participant = game.getChild('participants').getChildren('participant'); 
vegas.push(participant[0].getChildText('participant_name')); 
vegas.push(participant[0].getChildText('visiting_home_draw')); 
vegas.push(participant[1].getChildText('participant_name')); 
vegas.push(participant[1].getChildText('visiting_home_draw')); 
var period = game.getChild('periods').getChildren('period')[0]; 
if (period.getChild('moneyline')) { 
    vegas.push(period.getChild('moneyline').getChildText('moneyline_visiting')); 
    vegas.push(period.getChild('moneyline').getChildText('oneyline_home')); 
} 
else { 
    vegas.push(""); 
    vegas.push(""); 
} 
var spread = game.getChild('periods').getChildren('period')[0].getChild('spread'); 
vegas.push(spread.getChildText('spread_visiting')); 
vegas.push(spread.getChildText('spread_home')); 
vegas.push(spread.getChildText('spread_adjust_visiting')); 
vegas.push(spread.getChildText('spread_adjust_home')); 
vegas.push(period.getChild('total').getChildText('total_points')); 
vegas.push(period.getChild('total').getChildText('over_adjust')); 
vegas.push(period.getChild('total').getChildText('under_adjust')); 
+0

謝謝哈羅德,你修復 –