微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何简单地遍历具有GoogleJavascript 多级封装的 JSON?

如何解决如何简单地遍历具有GoogleJavascript 多级封装的 JSON?

我想检索特定加密货币的当前价格并更新我的 Google 表格中的某些字段。

这是一个简短的代码片段:

<style>
    h1.increase {
       font-size: 15px;
}
</style>

<h1 class="increase">Header</h1>

@在浏览器中执行 URL 时,我为 dataAll 得到这个:

dataAll content on Browser

@在谷歌脚本编辑器中执行时,谷歌运行时环境有这个

dataAll content

@这里是 JSON 格式的 api-url 调用的原始数据响应,数据中只有 1 个加密条目:

  var api_url = "API-URL";
  var response = UrlFetchApp.fetch(api_url);
  var dataAll = JSON.parse(response.getContentText());

为了更好的可读性,我只是将它粘贴到例如Notepad++ 并转到 Menu > JSON Viewer > Format JSON。

我知道这真的很基础,但是我现在如何遍历这个封装的对象并挖掘到适当的级别以便我可以读取价格?我只想选择一个特定的加密货币,例如id 为 1027 的以太坊并将其价格用于进一步用途。

我希望能够只选择适合我的投资组合的条目(例如,用 id: 区分)并在我的 Google 表格中获取特定单元格更新的价格。

非常感谢您的帮助!

最好的问候 多尼贝里

解决方法

if you want to get data by name just filter it

  const api_url = 'API-URL';
  const response = UrlFetchApp.fetch(api_url);
  const dataAll = JSON.parse(response.getContentText());
  const etherealData = dataAll.data.find(item => item.name === 'Ethereum');
,
function postDataToSheet() {
  const ss=SpreadsheetApp.getActive();
  const selected=['Symbol1','Symbol2']
  const api_url = "API-URL";
  let r= UrlFetchApp.fetch(api_url);
  let rjson = r.getContentText();
  let robj = JSON.parse(rjson);
  let vs=[];
  const ts=robj.status.timestamp;
  const tc=robj.status.total_count;
  vs.push(['TimeStamp',ts,'']);
  vs.push('Total Count',tc,'');
  vs.push(['Id','Symbol','Price']);

  //***************************************************
  //use this one to put them all on a sheet
  robj.data.forEach((item,i)=>{
    vs.push([item.id,item.symbol,item.quote.CHF.price])
  });
  const sh=ss.getSheetByName('Sheet1');
  sh.getRange(1,1,vs.length,vs[0].length).setValues(vs);

  //***************************************************
  //use this one to put only the selected on a sheet
  robj.data.forEach((item,i)=>{
    if(~selected.index(item.symbol)) {
      vs.push([item.id,item.quote.CHF.price])
    }
  });
  const sh=ss.getSheetByName('Sheet1');
  sh.getRange(1,vs[0].length).setValues(vs);

}
,

如果您只需要当前价格,我很确定您可以删除所有代码并使用 =IMPORTDATA("https://cryptoprices.cc/BTC/") 之类的东西来获取加密价格。

没有复杂的解析,没有身份验证,没有限制。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。