【问题标题】:JSON import - Cannot read property 'length' of undefinedJSON 导入 - 无法读取未定义的属性“长度”
【发布时间】:2022-01-01 10:06:17
【问题描述】:

我正在尝试通过 API 将 JSON 导入 Google 表格,但出现错误

Cannot read property 'length' of undefined

这是我的代码

function importRank(){
  url = 'https://public-api.solscan.io/token/holders?tokenAddress=sinjBMHhAuvywW3o87uXHswuRXb3c7TfqgAdocedtDj&offset=0&limit=max'
  var json = JSON.parse(UrlFetchApp.fetch(url).getContentText())
  var data = json.data.owner
  var data2 = json.data.rank
  var data3 = json.data.total
  var sh = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('WalletRank')
  sh.getRange(2,1,data.length,data[0].length).setValues(data)
  sh.getRange(2,2,data2.length,data2[0].length).setValues(data2)
  sh.getRange(2,3,data3.length,data3[0].length).setValues(data3)
}

【问题讨论】:

  • 这能回答你的问题吗? How can I test a trigger function in GAS?
  • json.data 不是父级,json.data 是一个数组
  • 您想从 API 中检索所有 24159 数据并将它们放入电子表格。我的理解正确吗?
  • 是 - 或者在我的电子表格中查找一个值并从 API 返回该行
  • 感谢您的回复。我不得不为我糟糕的英语水平道歉。不幸的是,我听不懂OR look up a value in my spreadsheet and return that row from the API。但我了解到您的问题已经解决。我很高兴。

标签: json google-apps-script google-sheets


【解决方案1】:

试试

function importRank(){
  url = 'https://public-api.solscan.io/token/holders?tokenAddress=sinjBMHhAuvywW3o87uXHswuRXb3c7TfqgAdocedtDj&offset=0&limit=max'
  var json = JSON.parse(UrlFetchApp.fetch(url).getContentText())
  var data=[]
  Logger.log(json.total)
  json.data.forEach(function(x){
    data.push([x.owner,x.rank,x.amount])
  })
  var sh = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('WalletRank')
  sh.getRange(2,1,data.length,data[0].length).setValues(data)
  sh.getRange(2,4).setValue(json.total)
}

说明

结构如下

{"data":[
{"address":"__________","amount":________,"decimals":__,"owner":"___","rank":_},
...
],"total":_____}

这意味着数据是多个元素的数组[],其中包含每个元素{} 地址、数量、小数、所有者和排名

参考

forEach

【讨论】:

  • 谢谢!几乎完美 - 但有 2 个问题: 1. 数据导入限制为 5000 行,而 JSON 有超过 20K 行。我怀疑这是一个分页问题。 2. 应出现在单元格 D2 中的“总计”数据缺失。
  • 事实上,考虑到分页问题,​​可能更容易记录 JSON 数据,然后对给定的“所有者”(在我的工作表中的单元格索引!C9 中找到)执行相应的“排名” "。
  • total can be fetch by json.total我已经修改了我的答案
  • 如果你能给我其他网页的网址,我可以把它们放在一起
  • 这很有帮助,谢谢!没有其他 URL - 如果您在浏览器中查看该 URL 的 API 数据,您会看到它有 +20K 行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-11-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-10
  • 2020-09-14
  • 2018-01-11
  • 2020-12-23
相关资源
最近更新 更多