Estoy analizando este JSON con el objetivo de exportar la lista de eventos fila por fila a la hoja. Este JSON tiene una estructura que considero no simple, hay arreglos dentro de arreglos.
espero algo asi
03/07/21 Rugby League NRL Canterbury-Bankstown Manly Ended 0 66 03/07/21 Rugby League NRL Canberra Gold Coast Ended 6 44 03/07/21 Rugby League NRL Newcastle North Queensland Ended 0 38 03/07/21 Rugby Union International Friendlie Maori All Blacks Samoa Ended 38 21 ... further eventsEste ha sido mi enfoque
function jSON() { var destSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("jsonTest"); var response = UrlFetchApp.fetch("https://lsc.fn.sportradar.com/common/en/Europe:London/gismo/sport_matches/12/2021-07-03"); var dataRes = JSON.parse(response.getContentText()); var dataSet = dataRes.doc[0].data.sport.realcategories; var output = [] for (var i = 0; i < dataSet.length; i++) { data = dataSet[i]; var val = []; val = [ data.tournaments[0].matches[i]._dt.date ,data.name ,data.tournaments[0].name ,data.tournaments[0].matches[i].teams.home.name ,data.tournaments[0].matches[i].teams.away.name ,data.tournaments[0].matches[i].status.name ,data.tournaments[0].matches[i].result.home ,data.tournaments[0].matches[i].result.away ]; output.push(val); Logger.log(output); } destSheet.getRange(2,1,output.length,output[0].length).setValues(output); }tengo esta salida
03/07/21 Rugby League NRL Canterbury-Bankstown Manly Ended 0 66 03/07/21 Rugby Union International Friendlies New Zealand Tonga Ended 102 0Me gustaría tratar de capturar todos los eventos y usar el enfoque correcto.
Básicamente necesitas más bucles; uno para cada matriz anidada para entrar.
Hay algunos problemas; mire su código sangrando lo hace difícil de leer y fácil de cometer errores. También está utilizando i , que es el contador de realcategories en las coincidencias ( matches[i] ), lo que significa que solo está viendo la coincidencia 0 de la categoría 0 y la coincidencia 1 de la categoría uno ...
Pruebe esto: la otra respuesta es más moderna, pero está más cerca de donde está comenzando; así que espero que tenga sentido...?
for (var i = 0; i < dataSet.length; i++) { data = dataSet[i]; for (var j = 0; j < data.tournaments.length; j++) { for (var k = 0; k < data.tournaments[j].matches.length; k++) { output.push([ data.tournaments[j].matches[k]._dt.date ,data.name ,data.tournaments[j].name ,data.tournaments[j].matches[k].teams.home.name ,data.tournaments[j].matches[k].teams.away.name ,data.tournaments[j].matches[k].status.name ,data.tournaments[j].matches[k].result.home ,data.tournaments[j].matches[k].result.away ]); } } }Necesitas iterar sobre categorías, torneos y partidos. Tal vez algo como esto:
var response = UrlFetchApp.fetch("https://lsc.fn.sportradar.com/common/en/Europe:London/gismo/sport_matches/12/2021-07-03"); var dataRes = JSON.parse(response.getContentText()); var dataSet = dataRes.doc[0].data.sport.realcategories; dataSet.reduce((prev, category) => { return [ ...prev, ...category.tournaments .map((tournament) => { return tournament.matches.map((match) => { return [ match._dt.date, category.name, tournament.name, match.teams.home.name, match.teams.away.name, match.status.name, match.result.home, match.result.away, ]; }); }) .flat(), ]; }, []);