解析google脚本中的json信息,没有重复出现的第一个标签

问题描述 投票:0回答:1

在谷歌表中,我有一个脚本可以从 url 检索 Json

function getTeamData() {
  var DATA_SPREADSHEET_ID = "xxxx";
  var ss = SpreadsheetApp.openById(DATA_SPREADSHEET_ID);
  var TeamDataSheet = ss.getSheetByName("rawTeam");
  TeamDataSheet.clearContents();

  var url = 'xxxx';

  var response = UrlFetchApp.fetch(url);

  var content = response.getContentText();
  var data = JSON.parse(content);
  //Logger.log(JSON.stringify(data));

我遇到的问题是 JSon 内容看起来像这样

{
    "03wi4": {
        "statsIncId": 5546,
        "rotowireId": 3795,
        "name": "Saunders, Wesley",
        "fantraxId": "03wi4",
        "team": "NY",
        "position": "SG"
    },
    "059gh": {
        "statsIncId": 6321,
        "rotowireId": 4919,
        "name": "Booth, Phil",
        "fantraxId": "059gh",
        "team": "(N/A)",
        "position": "PG"
    },
    "02nfe": {
        "statsIncId": 5020,
        "rotowireId": 3308,
        "sportRadarId": "c555e067-c4d5-43f6-99af-716b6005cbba",
        "name": "Henson, John",
        "fantraxId": "02nfe",
        "team": "NY",
        "position": "PF"
    },
    "033b7": {
        "statsIncId": 5235,
        "rotowireId": 3538,
        "name": "Raduljica, Miroslav",
        "fantraxId": "033b7",
        "team": "(N/A)",
        "position": "C"
    },
...
}

我希望能够返回每个参赛作品的团队,但我没有共同的第一个标签名称...... 你能帮忙吗,结果应该是这样的:

059gh    (N/A)
02nfe    NY
033b7    (N/A)```
json parsing google-apps-script tags
1个回答
0
投票

我相信您的目标如下。

  • 您想要从显示的 JSON 对象中检索类似
    [["03wi4","NY"],["059gh","(N/A)"],["02nfe","NY"],["033b7","(N/A)"]]
    的值。
  • 您显示的 JSON 对象是
    data
    var data = JSON.parse(content);

既然如此,下面的修改如何?

修改后的脚本:

function getTeamData() {
  var DATA_SPREADSHEET_ID = "xxxx";
  var ss = SpreadsheetApp.openById(DATA_SPREADSHEET_ID);
  var TeamDataSheet = ss.getSheetByName("rawTeam");
  TeamDataSheet.clearContents();

  var url = 'xxxx';
  var response = UrlFetchApp.fetch(url);
  var content = response.getContentText();
  var data = JSON.parse(content);

  // I added the below script.
  var res = Object.entries(data).map(([k, { team }]) => [k, team]);
  TeamDataSheet.getRange(1, 1, res.length, res[0].length).setValues(res);
}
  • 当考虑到您之前的问题时,请将上面的脚本修改如下。

    • 来自

        TeamDataSheet.getRange(1, 1, res.length, res[0].length).setValues(res);
      
    •   TeamDataSheet.getRange(1, 1, res.length, res[0].length).setNumberFormat("@").setValues(res);
      
  • 或者,

    • 来自

        var res = Object.entries(data).map(([k, { team }]) => [k, team]);
        TeamDataSheet.getRange(1, 1, res.length, res[0].length).setValues(res);
      
    •   var res = Object.entries(data).map(([k, { team }]) => [`'${k}`, team]);
        TeamDataSheet.getRange(1, 1, res.length, res[0].length).setValues(res);
      

注:

  • 在此修改中,假设
    data
    的值是您显示的 JSON 对象。请注意这一点。

参考资料:

© www.soinside.com 2019 - 2024. All rights reserved.