Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.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
Google sheets 试图将Coinbase Pro API导入Google工作表时出现分析错误_Google Sheets_Google Sheets Api - Fatal编程技术网

Google sheets 试图将Coinbase Pro API导入Google工作表时出现分析错误

Google sheets 试图将Coinbase Pro API导入Google工作表时出现分析错误,google-sheets,google-sheets-api,Google Sheets,Google Sheets Api,谷歌表单中的API很新,但我觉得我已经完成了95%的目标 我试着把加密数据拉到我的电子表格中,做一个简单的24小时价格比较,判断价格是上涨了还是下跌了,也许用一些条件代码把背景改成绿色或红色。很简单。不过,大多数提供API的网站都给了我各种错误,所以coinbase pro(奇怪的是,不推荐使用的gdax)是最可靠的(尽管我没有排除它开始崩溃的可能性,因为我现在输入了太多的调用请求) 发现这是获取ETH当前价格的一种方法,例如: =值(替换)替换(索引)导入数据https://api.gdax.

谷歌表单中的API很新,但我觉得我已经完成了95%的目标

我试着把加密数据拉到我的电子表格中,做一个简单的24小时价格比较,判断价格是上涨了还是下跌了,也许用一些条件代码把背景改成绿色或红色。很简单。不过,大多数提供API的网站都给了我各种错误,所以coinbase pro(奇怪的是,不推荐使用的gdax)是最可靠的(尽管我没有排除它开始崩溃的可能性,因为我现在输入了太多的调用请求)

发现这是获取ETH当前价格的一种方法,例如:

=值(替换)替换(索引)导入数据https://api.gdax.com/products/ETH-USD/ticker价格:,,,,,,,,,)

工作起来很有魅力。因此,我更改了请求,以针对不同的信息,特别是,以及该部分中的第一个值,即开盘价“open”(这确保我提前24小时准确获得价格)。但我在使用请求时遇到了一个奇怪的解析错误,如下所示:

=值(替换)替换(索引)导入数据https://api.pro.coinbase.com/products/ETH-USD/stats),0,1),“打开:”、”、”、”、”)

我已经解决了问题,但没有找到解决办法。Google Sheets说我正在输入文本。因为“open”(开盘价)值是JSON代码中列出的第一个值,所以它从嵌套的HTML/JSON代码中拉入了代码括号。例如,它说我无法将“{open”解析为一个数字。当我提取stats部分中列出的最后一个值时,我会遇到同样的问题,即“volume_30day:”

=值(替换)替换(索引)导入数据https://api.pro.coinbase.com/products/ETH-USD/stats)0,6),“第30天卷:,,,,,,,)

这将返回一个错误,表示“volume_30day:#}”无法解析,因此现在它是JSON代码的右括号。所以我不能用“打开”API 24小时统计部分的第一项,或者Volume_30day,这是列表中的第六项,但是第2-5项可以很好地工作。对我来说似乎非常奇怪,但我已经测试过了,它似乎就是正在发生的事情

这里一定有一些愚蠢的东西需要调整,但我不知道是什么。

答案1: 关于
=值https://api.pro.coinbase.com/products/ETH-USD/stats),0,1),“打开:”、”、”、”、”)

  • 当我选中
    =SUBSTITUTE(SUBSTITUTE)时https://api.pro.coinbase.com/products/ETH-USD/stats“,”,0,1),“打开:”,“,”,“,”)
    ,值是
    {open:617
    。我认为当使用
    value
    作为值时,会发生错误
为了检索您期望的值,我建议使用
REGEXREPLACE
而不是
SUBSTITUTE

=VALUE(REGEXREPLACE(INDEX(IMPORTDATA("https://api.pro.coinbase.com/products/ETH-USD/stats"),0,1), "open|""|{|}|:",""))
=VALUE(REGEXREPLACE(INDEX(IMPORTDATA("https://api.pro.coinbase.com/products/ETH-USD/stats"),0,6), "volume_30day|""|{|}|:",""))
const SAMPLE = (url, key) => JSON.parse(UrlFetchApp.fetch(url).getContentText())[key] || "no value";
  • 在这个修改过的公式中,
    open |”“{|}|:
    被用作正则表达式。它们被替换为
  • 在本例中,我认为
    =VALUE(REGEXEXTRACT(INDEX)(IMPORTDATA()https://api.pro.coinbase.com/products/ETH-USD/stats)也可以使用“\d+”)
    。但是当我想到你的第二个问题时,我认为上面的公式可能有用
结果:

答复2: 关于
=值https://api.pro.coinbase.com/products/ETH-USD/stats)0,6),“第30天卷:,,,,,,,)

  • 当我选中
    =SUBSTITUTE(SUBSTITUTE)时https://api.pro.coinbase.com/products/ETH-USD/stats),0,6),“卷日:”、”、”、”、”)
    ,值为
    7101445.64098932}
    。我认为当使用
    VALUE
    作为值时,会发生错误
为了检索您期望的值,我建议使用
REGEXREPLACE
而不是
SUBSTITUTE
。修正公式如下

=VALUE(REGEXREPLACE(INDEX(IMPORTDATA("https://api.pro.coinbase.com/products/ETH-USD/stats"),0,1), "open|""|{|}|:",""))
=VALUE(REGEXREPLACE(INDEX(IMPORTDATA("https://api.pro.coinbase.com/products/ETH-USD/stats"),0,6), "volume_30day|""|{|}|:",""))
const SAMPLE = (url, key) => JSON.parse(UrlFetchApp.fetch(url).getContentText())[key] || "no value";
  • 在这个修改过的公式中,
    volume_30day |“|{|}|:
    用作正则表达式。这些将被替换为
  • 在这个正则表达式中,它可以通过将上面正则表达式中的
    open
    替换为
    open |“{|}|:
    volume_30day
    来使用
结果:

其他模式1: 与其他使用内置公式的模式一样,以下修改公式如何

=VALUE(TEXTJOIN("",TRUE,ARRAYFORMULA(IFERROR(VALUE(REGEXREPLACE(IMPORTDATA("https://api.pro.coinbase.com/products/ETH-USD/stats"), "open|""|{|}|:","")),""))))

=VALUE(TEXTJOIN("",TRUE,ARRAYFORMULA(IFERROR(VALUE(REGEXREPLACE(IMPORTDATA("https://api.pro.coinbase.com/products/ETH-USD/stats"), "volume_30day|""|{|}|:","")),""))))
在这些公式中,可以通过替换正则表达式的
KEY |“{124;}|:
KEY
来检索值

其他模式2:
https://api.pro.coinbase.com/products/ETH-USD/stats
是JSON值。所以在这种情况下,当谷歌应用程序脚本创建的自定义函数也可以使用时

谷歌应用程序脚本如下

=VALUE(REGEXREPLACE(INDEX(IMPORTDATA("https://api.pro.coinbase.com/products/ETH-USD/stats"),0,1), "open|""|{|}|:",""))
=VALUE(REGEXREPLACE(INDEX(IMPORTDATA("https://api.pro.coinbase.com/products/ETH-USD/stats"),0,6), "volume_30day|""|{|}|:",""))
const SAMPLE = (url, key) => JSON.parse(UrlFetchApp.fetch(url).getContentText())[key] || "no value";
使用此脚本时,请将上述脚本复制粘贴到电子表格的脚本编辑器中并保存。请将自定义函数如
=SAMPLE(“https://api.pro.coinbase.com/products/ETH-USD/stats“,”打开“
=示例(“https://api.gdax.com/products/ETH-USD/ticker“,”price“
到单元格。通过此操作,可以检索值

参考资料:

太棒了,谢谢!这里有用的东西,不可能要求更彻底的答案。在你所有的回答中,我有东西可以解决未来的问题。非常感谢@谢谢你的回复。我很高兴你的问题解决了。也谢谢你。