-
-
Save learntheropes/abb5dd9fab96c7c2990a23ef12138778 to your computer and use it in GitHub Desktop.
// work in progress | |
// you need a bittrex API key and secret with read account option enabled | |
// I assume that all the keys are in the "keys" spreadsheet. The key is in cell B5 and the secret in cell C5 | |
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("keys"); | |
var key = sheet.getRange("B5").getValue() | |
var secret = sheet.getRange("C5").getValue(); | |
var baseUrl = 'https://bittrex.com/api/v1.1/'; | |
var nonce = Math.floor(new Date().getTime()/1000); | |
/** | |
* Used to retrieve all balances from your account. | |
* @return the balance of any currency that is not 0. | |
*/ | |
function bittrexGetbalances() { | |
var finals = []; | |
var results = bittrexPrivateRequest("account/getbalances"); | |
Logger.log(results) | |
results.forEach(function(result,index) { | |
finals.push({'currency': result.Currency, 'balance': result.Balance}) | |
}); | |
Logger.log(finals) | |
return json2array_(finals); | |
}; | |
/** | |
* Used to retrieve the balance from your account for a specific currency. | |
* @param {string} a string literal for the currency (ex: LTC). | |
* @return the currency balance. | |
* @customfunction | |
*/ | |
function bittrexGetbalance(currency) { | |
var payload = { "currency" : currency }; | |
var results = bittrexPrivateRequest("account/getbalance",payload); | |
return results.Balance; | |
}; | |
function bittrexPublicRequest(command,payload){ | |
var uri = uriCreator_(command,payload); | |
var response = UrlFetchApp.fetch(uri); | |
var dataAll = JSON.parse(response.getContentText()); | |
if (dataAll.success = true) { | |
return dataAll.result | |
} else { | |
return dataAll.message | |
} | |
} | |
function bittrexPrivateRequest(command,payload){ | |
var uri = uriCreator_(command,payload,true) | |
var signature = Utilities.computeHmacSignature(Utilities.MacAlgorithm.HMAC_SHA_512, uri, secret); | |
// Signature copied from comments: | |
var apisign = signature.map(function(byte) { | |
return ('0' + (byte & 0xFF).toString(16)).slice(-2); | |
}).join(''); | |
var headers = { | |
"apisign": apisign | |
} | |
var params = { | |
"method": "get", | |
"headers": headers, | |
"payload": payload | |
} | |
var response = UrlFetchApp.fetch(uri, params); | |
var dataAll = JSON.parse(response.getContentText()); | |
if (dataAll.success = true) { | |
return dataAll.result | |
} else { | |
return dataAll.message | |
} | |
}; | |
function uriCreator_(command,payload,private){ | |
if (payload) { | |
var payloadEncoded = Object.keys(payload).map(function(param) { | |
return encodeURIComponent(param) + '=' + encodeURIComponent(payload[param]); | |
}).join('&'); | |
} | |
if (private) { | |
uri = baseUrl.concat(command + "?apikey=" + key + "&nonce=" + nonce + "&" + payloadEncoded) | |
} else { | |
uri = baseUrl.concat("public/" + command + "?" + payloadEncoded) | |
} | |
return uri | |
}; | |
function json2array_(data){ | |
var results = []; | |
var keys = []; | |
var values = []; | |
for (var i in data){ | |
for (var key in data[i]){ | |
if (i == 0) keys.push(key); | |
values.push(data[i][key]); | |
} | |
if (i == 0){ | |
results.push(keys); | |
keys = []; | |
} | |
results.push(values); | |
values = []; | |
} | |
return results; | |
}; |
Hi, met some problems and would appreciate if you can help. The API and connection is success, but when it retrieve the balance, it also retrieve all the coins which the balance are 0. How can I filter those out. Thanks.
I feel a bit lost here I put the code in and I am use to telling it to post results to a set page. What do you put in the Dell for it to use that section
You shouldn't you just in the cell place =bittrexGetbalances and it should go out and download all your balances? Is there more to it. Please let me understand when i do this I get
Error
Unknown range name: 'BITTREXGETBALANCES'
ok so looks like
=bittrexGetbalances()
and
=bittrexGetOrderHistoryV1()
is all that working for this script am I correct. Sorry I am learning
@leejie8008 looks like it pulls everything you have a wallet on BTW
Thanks. Pretty helpful
None of you unfortunately answered, how the sheet itself can be generated? I added the keys to key sheet, but don't get any results being displayed. Please help!
Hey could somebody clarify how I would send a buy order with this code?
Ive tried:
bittrexPrivateRequest("Buy",)
but I do not know what to insert in the field "Payload".
I am aware that i have to insert the currency, the amount and the rate; but do not know in which format
Many thanks!
I'm not sure what I should add as a payload. I'm trying to get the orderhistory for my account. bittrexPrivateRequest("getorderhistory",). It keeps saying payload needs to be an object and not a string... (when I supply count=50 for example).
Edit:
I figured it out, don't call bittrexprivaterequest from within a cell, but only within the script. Add:
which you can call from within a cell