从 CoinMarketCap API 以欧元而不是美元获取报价 - GAS
Get quote price from CoinMarketCap API in EUR instead of USD - GAS
以下代码在 CoinMarketCap API
的 GAS(Google Apps 脚本)中对我来说工作正常
function cmcQuotes2() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('base');
var lastRow = sheet.getLastRow();
var extension= lastRow - 2;
var oldAsset=sheet.getRange(2, 1, extension).getValues();
var rows=[];
var j;
for (j=0; j < oldAsset.length; j++) {
rows.push(oldAsset[j][0]);}
var apiKey = '*** your api key';
var params = {
'method' : 'GET',
'qs' : {'start': '1', 'limit': '100', 'convert': 'USD'},
'headers' : {'X-CMC_PRO_API_KEY': apiKey},
'muteHttpExceptions': true};
var url = "https://pro-api.coinmarketcap.com/v1/cryptocurrency/listings/latest";
var data = UrlFetchApp.fetch(url, params);
var data = JSON.parse(data.getContentText());
var data = data.data;
var i;
for (i=0; i < data.length; i++) {
var asset = data[i].symbol;
var quote = data[i].quote.USD.price;
if (quote < 1) {var a = parseFloat(quote); var a = a.toFixed(8); var quote = parseFloat(a);}
if (quote >=1) {var a = parseFloat(quote); var a = a.toFixed(2); var quote = parseFloat(a);}
var row=rows.indexOf(asset)+2;
if (row>=2){
sheet.getRange(row, 2).setValue(quote);
}
}
}
但是
无论我如何尝试以欧元而非美元报价,我都做不到。
我根本做不到。
转换 欧元而不是美元?没用。
var params = {
'method' : 'GET',
'qs' : {'start': '1', 'limit': '100', 'convert': 'EUR'},
'headers' : {'X-CMC_PRO_API_KEY': apiKey},
'muteHttpExceptions': true};
quote.EUR 而不是 quote.USD ??没用..
var quote = data[i].quote.EUR.price;
第一种情况忽略欧元,第二种情况returns:
12:59:50
Errore
TypeError: Cannot read property 'price' of undefined
你怎么看?
谢谢
修改点:
- 在
UrlFethApp.fetch(url, params)
的params
处,qs
的属性不存在。我认为这可能是您遇到问题的原因。
- 从“Listings Latest”的官方文档来看,好像要求使用
qs
的值作为查询参数。
当以上几点反映到你的脚本中,就会变成下面这样。
修改后的脚本:
从:
var apiKey = '*** your api key';
var params = {
'method' : 'GET',
'qs' : {'start': '1', 'limit': '100', 'convert': 'USD'},
'headers' : {'X-CMC_PRO_API_KEY': apiKey},
'muteHttpExceptions': true};
var url = "https://pro-api.coinmarketcap.com/v1/cryptocurrency/listings/latest";
var data = UrlFetchApp.fetch(url, params);
到:
var apiKey = '*** your api key';
var url = "https://pro-api.coinmarketcap.com/v1/cryptocurrency/listings/latest?start=1&limit=100&convert=USD";
var params = {
'method': 'GET',
'headers': {'X-CMC_PRO_API_KEY': apiKey, 'Accept': 'application/json'},
'muteHttpExceptions': true
};
var data = UrlFetchApp.fetch(url, params);
注:
- 在这个修改后的脚本中,它假定您的 API 密钥可以用于您要使用的 API。请注意这一点。
参考文献:
以下代码在 CoinMarketCap API
的 GAS(Google Apps 脚本)中对我来说工作正常function cmcQuotes2() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('base');
var lastRow = sheet.getLastRow();
var extension= lastRow - 2;
var oldAsset=sheet.getRange(2, 1, extension).getValues();
var rows=[];
var j;
for (j=0; j < oldAsset.length; j++) {
rows.push(oldAsset[j][0]);}
var apiKey = '*** your api key';
var params = {
'method' : 'GET',
'qs' : {'start': '1', 'limit': '100', 'convert': 'USD'},
'headers' : {'X-CMC_PRO_API_KEY': apiKey},
'muteHttpExceptions': true};
var url = "https://pro-api.coinmarketcap.com/v1/cryptocurrency/listings/latest";
var data = UrlFetchApp.fetch(url, params);
var data = JSON.parse(data.getContentText());
var data = data.data;
var i;
for (i=0; i < data.length; i++) {
var asset = data[i].symbol;
var quote = data[i].quote.USD.price;
if (quote < 1) {var a = parseFloat(quote); var a = a.toFixed(8); var quote = parseFloat(a);}
if (quote >=1) {var a = parseFloat(quote); var a = a.toFixed(2); var quote = parseFloat(a);}
var row=rows.indexOf(asset)+2;
if (row>=2){
sheet.getRange(row, 2).setValue(quote);
}
}
}
但是
无论我如何尝试以欧元而非美元报价,我都做不到。
我根本做不到。
转换 欧元而不是美元?没用。
var params = {
'method' : 'GET',
'qs' : {'start': '1', 'limit': '100', 'convert': 'EUR'},
'headers' : {'X-CMC_PRO_API_KEY': apiKey},
'muteHttpExceptions': true};
quote.EUR 而不是 quote.USD ??没用..
var quote = data[i].quote.EUR.price;
第一种情况忽略欧元,第二种情况returns:
12:59:50
Errore
TypeError: Cannot read property 'price' of undefined
你怎么看? 谢谢
修改点:
- 在
UrlFethApp.fetch(url, params)
的params
处,qs
的属性不存在。我认为这可能是您遇到问题的原因。 - 从“Listings Latest”的官方文档来看,好像要求使用
qs
的值作为查询参数。
当以上几点反映到你的脚本中,就会变成下面这样。
修改后的脚本:
从: var apiKey = '*** your api key';
var params = {
'method' : 'GET',
'qs' : {'start': '1', 'limit': '100', 'convert': 'USD'},
'headers' : {'X-CMC_PRO_API_KEY': apiKey},
'muteHttpExceptions': true};
var url = "https://pro-api.coinmarketcap.com/v1/cryptocurrency/listings/latest";
var data = UrlFetchApp.fetch(url, params);
到:
var apiKey = '*** your api key';
var url = "https://pro-api.coinmarketcap.com/v1/cryptocurrency/listings/latest?start=1&limit=100&convert=USD";
var params = {
'method': 'GET',
'headers': {'X-CMC_PRO_API_KEY': apiKey, 'Accept': 'application/json'},
'muteHttpExceptions': true
};
var data = UrlFetchApp.fetch(url, params);
注:
- 在这个修改后的脚本中,它假定您的 API 密钥可以用于您要使用的 API。请注意这一点。