お困りですか?

NiceHash APIとGoogleスプレッドシートの連携方法

この記事では、Google Apps ScriptでNiceHash APIを使用してGoogleスプレッドシートにデータを書き込む方法について説明します。このガイドを出発点として、収益、入出金、残高を追跡したり、他のカスタムスクリプトを構築することができるようになるでしょう。

目次


#1 APIキー・秘密鍵生成

NiceHash endpointを呼び出すには、まず秘密鍵と公開鍵を作成して下さい。

これは、以下の手順で行なえます。

  1. NiceHashにログインし、アカウントチーム設定 > APIキーを開く
  2. APIキーを新規作成をクリックしすべての項目を入力する
  3. 2FAキーを入力する
  4. APIキーコードAPI秘密鍵コードを保存する。これらのキーはこのタイミングでのみ表示されます。もし紛失した場合、別途新規作成しなくてはなりません。
  5. ご登録メールアドレスに送信されるコードでAPIキーを認証する

API keys NiceHash

チームIDが必要になります。アカウント/チーム設定 > APIキーページでご確認下さい。


#2 Google Apps Script

GoogleスプレッドシートでGoogle Scriptsを利用するには、Googleスプレッドシートで拡張 > Apps Scriptを選択して下さい。

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"}

APIの詳細についてはNiceHash ドキュメントをご覧ください。


#4 コーディングとスプレッドシートへの出力

ここからは、Google Apps Scriptで基礎的なJavascriptを使用してコーディングを行います。Apps Scriptのドキュメントはこちらをご参照下さい。

上記の例では、ビットコインアドレスを取得することができます。このアドレスにアクセスするには、var address = obj.address;を使用して下さい。

次に、この関数をシート (スプレッドシート内のタブ) にリンクする必要があります。これはこのコードで実行できます:

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

アドレスの値のスプレッドシートへの記載は、このコードで実行できます。

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

上部にあるRUNボタンをクリックするとスクリプトが実行され、ビットコインアドレスがB2セルに入力されます。


#5 コードサンプル

このコードをApps Scriptにコピーして実行してみて下さい。ご自分の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);
}


執筆:
Marko Tarman
MarkoはNiceHashのマイニングマネージャーであり、コンテンツ・クリエーターです。彼は最初のASICがリリースされる前の2012年にマイニングを始め、GPUでBTC・LTC・VTCからDOGEまでもマイニングするようになりました。彼の座右の銘は「問題が99個あったとしても、ライザーの不具合がすべての原因だ」です。