Estoy tratando de obtener la lista de jugadores de la API de Wargaming a la hoja de cálculo de Google. Este es el código:
function playersList() { const sheet = SpreadsheetApp.getActiveSheet(); const initUrl = UrlFetchApp.fetch( 'https://api.worldoftanks.eu/wot/globalmap/eventrating/?application_id=e631b3284e60a8d5b589545bbaa6b3af&front_id=thunderstorm_bg&event_id=thunderstorm&limit=100&page_no=1', ); const initJson = initUrl.getContentText(); var initData = JSON.parse(initJson); const numOfSites = initData['meta']['page_total']; const urls = []; for (var i = 1; i < numOfSites; i++) { let url = `https://api.worldoftanks.eu/wot/globalmap/eventrating/?application_id=e631b3284e60a8d5b589545bbaa6b3af&front_id=thunderstorm_bg&event_id=thunderstorm&limit=100&page_no=${i}`; urls.push(url); } var data = []; for (var x = 0; x < numOfSites - 1; x++) { var loopUrl = UrlFetchApp.fetch(urls[x]); var loopJson = loopUrl.getContentText(); var DATA = JSON.parse(loopJson); data.push(DATA); } for (var z = 0; z < numOfSites - 1; z++) { for (var y = 0; y < 99; y++) { sheet .getRange(sheet.getLastRow() + 1, 1) .setValue([`data${i}`['data'][y]['rank']]); } } } Aparentemente, un problema es .setValue([ data${i} ['data'][y]['rank']]); El error devuelto es: TypeError: no se puede leer la propiedad '0' de indefinido
Desglosemos tu .setValue :
[`data${i}`['data'][y]['rank']] // with some formatting and brackets addded: [ (`data${i}`)['data'][y]['rank'] ] // split in statements const str = `data${i}`; [ str['data'][y]['rank'] Su data${i} es una cadena, y las cadenas no tienen un campo .data , lo que resulta en undefined . Luego realiza [y] donde y es 0 durante el primer ciclo, y es por eso que obtiene ese error.
Supongo que querías hacer data[i] en lugar de
`data${i}`