Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript GoogleSheets:解析JSON结果_Javascript_Json_Google Sheets - Fatal编程技术网

Javascript GoogleSheets:解析JSON结果

Javascript GoogleSheets:解析JSON结果,javascript,json,google-sheets,Javascript,Json,Google Sheets,前言:我是JS的新手,已经用谷歌搜索了几个小时的解决方案 我正在使用GoogleSheets(在脚本编辑器中)对公共端点进行API调用。以下是我当前的代码: function getMaterials() { var myUrl = "https://api.guildwars2.com/v2/account/materials?access_token=[my_access_token]"; var jsonData = UrlFetchApp.fetch(myUrl);

前言:我是JS的新手,已经用谷歌搜索了几个小时的解决方案

我正在使用GoogleSheets(在脚本编辑器中)对公共端点进行API调用。以下是我当前的代码:

function getMaterials() {
    var myUrl = "https://api.guildwars2.com/v2/account/materials?access_token=[my_access_token]";
    var jsonData = UrlFetchApp.fetch(myUrl);
    var jsonString = jsonData.getContentText();
    return jsonString;
}
下面是返回内容的一个片段:

[
  {
    "id": 12134,
    "category": 5,
    "count": 14
  },
  {
    "id": 12238,
    "category": 5,
    "count": 0
  },
  {
    "id": 12147,
    "category": 5,
    "count": 6
  },
  {
    "id": 12142,
    "category": 5,
    "count": 12
  },
  {
    "id": 12135,
    "category": 5,
    "count": 0
  },
  {
    "id": 12246,
    "category": 5,
    "count": 1
  }
]
以下是我正在使用的特定API的文档:

没有真正的方法过滤掉我的电话,否则我会非常乐意使用它


我希望查询“id”值,但在同一查询中只返回“count”值。我在不同的网站上尝试了多种方法,但都没有成功。帮助?

我找不到该端点的API文档,但我想您可以将数据转换为使用id作为键的对象。根据您的使用情况,如果可能的话,最好只查询特定密钥的API(即,如果您只需要少量数据),因为这将减少接收的数据量和内存使用。但如果失败了,希望这会有所帮助

var data=getMaterials();
//按ID映射每个对象
函数GetMaterialdMap(数据){
var材料={};
对于(变量i=0;i}
我最终找到了一些其他JS代码,它们满足了我的需要

它允许我通过一个将数据格式化为列的函数向API提供数据。我可以把这些数据放在另一张表中,并将其输入到我的主表中


谢谢你,布莱恩。我在我的原始帖子中添加了特定的API和文档。稍后我会尝试一下你的建议。非常欢迎@jmct。谢谢你加上:)。我已经看过了,我不认为特定的API端点允许指定一个ID,所以prob只需要获取它们,然后过滤。如果你有任何问题,请告诉我,我会再看一看!好的,我已经在GoogleSheets的脚本编辑器中插入了上面的代码,但是现在我不知道我应该如何使用ID进行调用。此外,添加它之后,我无法再从getMaterials函数中获取返回的数据。正在查看:“TypeError:无法从未定义中读取属性“length”我已经更新了这个示例-请求必须在没有ID的情况下进行,然后我们迭代数据,将每个项分配给一个对象,其键是ID。如果
getMaterials
不返回任何内容或对象数组以外的内容,我的代码将抛出类似的错误。如果您的
getMaterials
函数本身工作正常,请确保在使用时也删除我的伪函数,因为这可能会导致问题。如果
getMaterials
正在工作,您应该能够简单地
=countFromId(12134)
。我还删除了一些
console.log
s,因为google sheets似乎没有定义console对象。我继续删除了伪数据,代码确实运行得很干净,但是类似于=countFromId(12134)的输出没有返回任何内容。以下是完整的代码(我在pastebin中添加了密钥以帮助调试-我可以稍后生成另一个密钥,并且不会暴露任何敏感数据):