【问题标题】:Parse JSON import data string into two columns将 JSON 导入数据字符串解析为两列
【发布时间】:2021-12-28 11:09:42
【问题描述】:

我正在尝试将以下 JSON 导入 Google 表格并将结果分成两列。数据是来自 Coingecko 的硬币价格数据。

https://api.coingecko.com/api/v3/coins/invictus/market_chart?vs_currency=usd&days=30&interval=daily

JSON 以下列格式返回 UNIX 时间戳数据和价格:

"prices":[timestamp , price],[timestamp , price]....

我可以使用来自https://blog.fastfedora.com/projects/import-json 的代码导入 JSON,如下所示:=ImportJSON("https://api.coingecko.com/api/v3/coins/invictus/market_chart?vs_currency=usd&days=30&interval=daily", "/prices", "noInherit,noTruncate", doNotDelete!$A$1)

但是,它在单元格 A:2 中将数据作为一个长字符串返回。例如:

1638144000000,746.6771503601128,1638230400000,790.8738166468181,1638316800000,813.0212755328346,1638403200000,747.1829923418416,1638489600000,603.2418788487082,1638576000000,527.9869145332356,1638662400000,457.35694186735213,1638748800000,459.1020634102568,1638835200000,379.45955893531516,1638921600000,367.4285592864082,1639008000000,332.6569958807504,1639094400000,360.31721655542077,1639180800000,353.72371970970227,1639267200000,311.1900754529333,1639353600000,304.50307298537416,1639440000000,245.09538112807542,1639526400000,236.7967986455728,1639612800000,256.7026205778511,1639699200000,258.6393225791494,1639785600000,267.78476662611047,1639872000000,286.931173745379,1639958400000,307.5668050495342,1640044800000,326.8786486489706,1640131200000,378.46907838034076,1640217600000,398.40479671686626,1640304000000,366.45154529552616,1640390400000,316.05924359618723,1640476800000,329.5910997574541,1640563200000,305.52573964071496,1640649600000,280.05521099343133,1640688200000,265.71741103257415

我需要一些帮助,将这些数据解析为 2 列,A 列是 UNIX 时间戳,B 列是价格

【问题讨论】:

  • 我有足够的声望就去做

标签: json parsing google-sheets


【解决方案1】:

解析 coingecko 的 json 的简单方法(请注意,您的请求数量有限)

function myFunction(){
  url = 'https://api.coingecko.com/api/v3/coins/invictus/market_chart?vs_currency=usd&days=30&interval=daily'
  var json = JSON.parse(UrlFetchApp.fetch(url).getContentText())
  var data = json.prices
  var sh = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet()
  sh.getRange(2,1,data.length,data[0].length).setValues(data)
}

【讨论】:

  • 感谢您抽出宝贵时间!我很感激。但是我收到以下错误Exception: You do not have permission to call setValues (line 6).
  • 谢谢 - 我现在已经修好了 - 还包括市值数据。
【解决方案2】:

请参阅下面的答案,以及包含市值数据的最终解决方案。

  url = 'https://api.coingecko.com/api/v3/coins/invictus/market_chart?vs_currency=usd&days=30&interval=daily'
  var json = JSON.parse(UrlFetchApp.fetch(url).getContentText())
  var data = json.prices
  var data2 = json.market_caps
  var sh = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('ChartData')
  sh.getRange(2,1,data.length,data[0].length).setValues(data)
  sh.getRange(2,3,data2.length,data2[0].length).setValues(data2)
}```

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-07
    相关资源
    最近更新 更多