需要帮助?

在Google表格中调用NiceHash API的指南

在本文中,我们将解释如何使用Google应用程序脚本(Google Apps Script)与NiceHash API,并将数据写入到Google电子表格。您可以以本指南为起点,并开始学习如何跟踪您的收入、支出、余额,或者编写您的自己的自定义脚本。

目录:


#1 生成API密匙与私钥

为了调用NiceHash端点,您需要先创建端点的私钥及公钥。

请按照以下步骤操作:

  1. 访问NiceHash平台,访问 账号账号设置 > API密匙
  2. 点击 创建新的API密匙 并填写表格;
  3. 输入2FA密匙;
  4. 保存 API Key Code(API密匙代码) 以及 API Secret Key Code(API私钥代码),这些代码仅在本界面显示,如果错过了则需要重新创建;
  5. 使用邮件中的确认代码对API密匙进行确认。

API keys NiceHash

您还需要一个组织ID,该信息可在 账户/组织设定 > API密匙页面 中找到。


#2 Google应用程序脚本(Google Apps Script)

从Google表格中打开Google脚本,并在Google表格中访问 Extensions(扩展) > Apps Script(应用程序脚本)

当看到一个空白的“function MyFunction()”时,即表明您可以开始编程。

API methods nicehash


#3 认证

复制一下代码到“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);

该代码将调用NiceHash API服务创建一个认证程序。

现在您可以使用var obj开始使用了。

响应案例:

{"address":"39ok3paMEbrtb1fKukbCreAESLzp5nAMVU"}

查阅NiceHash文档获取更多API参数。


#4 编程及写入数据到表格

现在,您可以使用一些基础Javascript在Google应用程序脚本中进行编程了,您可以点击这里查看应用程序脚本的技术文档。

您可以运用上述案例中的参数来抓取比特币的地址,仅需使用var address = obj.address;

接下来,您须将函数链接到工作表(电子表格中的选项卡),请使用该代码来实现这项功能:

var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("SHEET_NAME");

将地址值写入表格中,请查看这里:

var cell = sheet.getRange("B2"); cell.setValue(address);

您仅需点击顶部的RUN(运行)按钮即可启动脚本,比特币地址将写入到B2单元格中。


#5 完整代码案例

将此代码复制到您的应用程序脚本并运行,请同时记住修改你的API密匙及组织ID!

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);
}