Guía de integración de la API de NiceHash con las hojas de cálculo de Google
En este artículo, vamos a explicar cómo utilizar Google Apps Script con NiceHash API y escribir datos en la hoja de cálculo de Google. Puedes utilizar esta guía como punto de partida para hacer el seguimiento de tus ganancias, pagos, saldo o construir otros scripts personalizados.
Lista de contenidos:
- Generación de claves y secretos de la API
- Guión de Google Apps
- Autenticación
- Codificación y escritura de datos en la hoja de cálculo
- Ejemplo de código completo
#1 Generación de claves y secretos de la API
Para llamar al endpoint de NiceHash, hay que crear primero las claves privadas y públicas del endpoint.
Puedes hacerlo siguiendo estos pasos:
- Dentro de la plataforma NiceHash, navegue hasta la configuración de API keys de lacuenta o de la organización.
- Haga clic en Crear nueva clave API y rellene el formulario.
- Introduzca la clave 2FA.
- Guarde Código de la clave API y Código de la clave secreta de la API. Estas claves sólo se mostrarán en este momento. Si se pierden, tendrá que generar nuevas claves.
- Confirme la clave API con el código enviado a su correo electrónico.

También necesitará un ID de organización. Puede encontrarlo en la página de Configuración de la cuenta/organización > Claves API..
#2 Script de Google Apps
Para abrir los Scripts de Google desde las Hojas de Cálculo de Google, sólo tienes que ir a la sección Extensiones > Script de Apps dentro de la hoja de cálculo de Google.
Verás una función vacía MyFunction() Ahora está listo para empezar a codificar.

#3 Autenticación
Copie este código dentro de myFunction().
function generateNonce() {
var d = Date.now();
return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, function (c) {
var r = (d + Math.random() * 16) % 16 | 0;
d = Math.floor(d / 16);
return (c == "x" ? r : r & 0x7 | 0x8).toString(16);
});
}
eval(UrlFetchApp.fetch("https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.9-1/crypto-js.min.js").getContentText());
eval(UrlFetchApp.fetch("https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.9-1/hmac-sha256.min.js").getContentText());
eval(UrlFetchApp.fetch("https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.9-1/enc-base64.min.js").getContentText());
var delim = "\u0000";
var url = "/main/api/v2/mining/miningAddress"; //Example of GET method. Change this to call different methods. Only use URL after "https://api2.nicehash.com".
var key = "YOUR_API_KEY"; //Change this value to your custom key. Leave quotation marks.
var secret = "YOUR_API_SECRET"; //Change this value to your custom secret. Leave quotation marks.
var org = "YOUR_ORGANIZATION_ID"; //Change this value to your custom id. Leave quotation marks.
var time = ""+new Date().getTime();
var nonce = generateNonce();
var reqMeth = "GET";
var content = key + delim + time + delim + nonce + delim + delim + org + delim + delim + reqMeth + delim + url + delim;
var HMACsig = CryptoJS.HmacSHA256(content, secret);
var xServiceAuth = key + ":" + HMACsig;
var headers = {"X-Nonce": nonce, "X-Time": time, "X-Auth": xServiceAuth, "X-Organization-Id": org};
var response = UrlFetchApp.fetch("https://api2.nicehash.com" + url, {"headers": headers});
var content = response.getContentText();
var obj = JSON.parse(content);
Este código creará una autenticación con el servicio API de NiceHash.
Puede utilizar var obj para jugar ahora.
Ejemplo de respuesta:
{"address":"39ok3paMEbrtb1fKukbCreAESLzp5nAMVU"}
Para conocer otros métodos de la API, utilice la Documentación de NiceHash.
#4 Codificación y escritura de datos en la hoja de cálculo
A partir de ahora, puedes empezar a codificar con Javascript básico dentro de Google Apps Script. Puedes encontrar la documentación de Apps Script aquí.
Puede obtener la dirección de Bitcoin con el ejemplo anterior. Para acceder a esta dirección simplemente utilice var address = obj.address;
A continuación, debes vincular la función a la hoja (pestaña dentro de la hoja de cálculo). Puedes hacerlo con este código:
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("SHEET_NAME");
Para escribir el valor de la dirección en la hoja de cálculo, utilice este:
var cell = sheet.getRange("B2"); cell.setValue(address);
Ejecute el script haciendo clic en el botón RUN de la parte superior. La dirección de Bitcoin se escribirá en la celda B2.
#5 Ejemplo de código completo
Copie este código en su Apps Script y ejecútelo. Recuerde cambiar las claves de la API y el ID de la organización.
function myFunction() {
function generateNonce() {
var d = Date.now();
return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, function (c) {
var r = (d + Math.random() * 16) % 16 | 0;
d = Math.floor(d / 16);
return (c == "x" ? r : r & 0x7 | 0x8).toString(16);
});
}
eval(UrlFetchApp.fetch("https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.9-1/crypto-js.min.js").getContentText());
eval(UrlFetchApp.fetch("https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.9-1/hmac-sha256.min.js").getContentText());
eval(UrlFetchApp.fetch("https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.9-1/enc-base64.min.js").getContentText());
var delim = "\u0000";
var url = "/main/api/v2/mining/miningAddress"; //Example of GET method. Change this to call different methods. Only use URL after "https://api2.nicehash.com".
var key = "YOUR_API_KEY"; //Change this value to your custom key. Leave quotation marks.
var secret = "YOUR_API_SECRET"; //Change this value to your custom secret. Leave quotation marks.
var org = "YOUR_ORGANIZATION_ID"; //Change this value to your custom id. Leave quotation marks.
var time = ""+new Date().getTime();
var nonce = generateNonce();
var reqMeth = "GET";
var content = key + delim + time + delim + nonce + delim + delim + org + delim + delim + reqMeth + delim + url + delim;
var HMACsig = CryptoJS.HmacSHA256(content, secret);
var xServiceAuth = key + ":" + HMACsig;
var headers = {"X-Nonce": nonce, "X-Time": time, "X-Auth": xServiceAuth, "X-Organization-Id": org};
var response = UrlFetchApp.fetch("https://api2.nicehash.com" + url, {"headers": headers});
var content = response.getContentText();
var obj = JSON.parse(content);
//-----START CODING BELOW THIS LINE-----
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("SHEET_NAME");
var address = obj.address;
var cell = sheet.getRange("B2");
cell.setValue(address);
}