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