TypeError: Cannot read property '0' of undefined Google Spreadsheets API

TypeError: Cannot read property '0' of undefined Google Spreadsheets API

我正在尝试从 Wargaming API 获取玩家列表到 Google 电子表格。这是代码:

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']]);
        }
    }
}

显然问题是 .setValue([data${i}['data'][y]['rank']]); 返回的错误是:TypeError: Cannot read 属性 '0' of undefined

让我们分解一下您的 .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']

您的 data${i} 是一个字符串,而字符串没有 .data 字段,因此导致 undefined。然后你在第一个循环中执行 [y] 其中 y0,这就是你得到那个错误的原因。

我假设你打算做 data[i] 而不是

`data${i}`