Javascript GoogleSheets:解析JSON结果
前言:我是JS的新手,已经用谷歌搜索了几个小时的解决方案 我正在使用GoogleSheets(在脚本编辑器中)对公共端点进行API调用。以下是我当前的代码: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);
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中添加了密钥以帮助调试-我可以稍后生成另一个密钥,并且不会暴露任何敏感数据):