🙌

○○Scan(Etherscanなど)の結果をAPIで取得し、それをスプレッドシートに表示させよう!

2022/11/29に公開

こんにちは、CryptoGamesのユウキです。

本日は、〇〇Scan(Etherscan, Polygonscan, BscScanなど)で取得したAPIの結果をスプレッドシートで表示する方法を紹介します。

今回はあまり馴染みのなさそうな、BscScanでやってみようと思います。

0. BscScanのAPIキートークンを取得しよう

まずは、BscScanを登録しましょう。無料プランで大丈夫です。
https://bscscan.com/

下のようにして、APIキートークンが取得できます。

1. ImportJsonを設定する

APIの結果はJSON形式で返ってきます。

その結果を受け取るために、「ImportJson」というオープンソースを利用します。

「拡張機能」から「Apps Script」

こちらの「ImportJSON」のGithubに行き、
https://github.com/bradjasper/ImportJSON/blob/master/ImportJSON.gs

ソースコードをコピーして

「ImportJson.gs」という名前をつけて、下のように貼り付けます。

2. AutoRefreshを設定する

下のように、「AutoRefresh」というシートを作ります。

「Apps Script」に「AutoRefresh.gs」を作成し、こちらの関数を貼り付けます。

function AutoRefresh() {  
    SpreadsheetApp.getActive().getSheetByName('AutoRefresh').getRange(1, 1).setValue(Math.random());
}

内容は、今作った、「AutoRefresh」というシートの(1,1)セルの値をランダムな数値にセットするという内容です。

こちらから、「トリガーを追加」

「AutoRefresh」という関数をどの程度の頻度で実行させるかを設定します。
今回は下のように設定します。

設定ができたら、「保存」

3. APIを確認する

では、どんなAPIを入力すればよいのかを確認しましょう。

Bscのテストネットの場合はこちらになります。
https://testnet.bscscan.com/apidoc

例えば、こちらの、特定のアカウントのBNBのバランスを取得するAPIを使ってみましょう。

下の、「address=」の先に確認したいウォレットアドレスを入れて、「YourApiKeyToken」の部分に自分のAPIキートークンを入れます。

https://api-testnet.bscscan.com/api?module=account&action=balance&address=0x0000000000000000000000000000000000001004&tag=latest&apikey=YourApiKeyToken

ブラウザなどで確認すると、このように結果を取得することができました。

3. Apiの結果をスプレッドシートで取得する

では、これを下のような関数で、スプレッドシートに貼り付けてみましょう。

=ImportJSON("https://api-testnet.bscscan.com/api?module=account&action=balance&address=0x049E8641964cf92f38c50397e34CCE9C3f24dB5E&tag=latest&apikey=YourApiKeyToken", "/result", "allHeaders", AutoRefresh!$A$1)

なお、「AutoRefresh」を行わない場合は下の関数になります。(「AutoRefresh!$A$1」の部分を抜いています。)

=ImportJSON("https://api-testnet.bscscan.com/api?module=account&action=balance&address=0x049E8641964cf92f38c50397e34CCE9C3f24dB5E&tag=latest&apikey=YourApiKeyToken", "/result", "allHeaders")

これで、下のように、結果が表示されました。

では、情報量の多い、下のようなトランザクションからAPIを取ってきてみましょう。

こちらのAPIを利用してみましょう。

下のような関数を実行します。

=ImportJSON("https://api-testnet.bscscan.com/api?module=proxy&action=eth_getTransactionReceipt&txhash=0x02a08b6c106c1fbc8653981fc7e262b6ae95aa066aa47b2c7bad57563abf2341&apikey=YourApiKeyToken", "/result", "allHeaders", AutoRefresh!$A$1)

なお、「AutoRefresh」を行わない場合は下の関数になります。(「AutoRefresh!$A$1」の部分を抜いています。)

=ImportJSON("https://api-testnet.bscscan.com/api?module=proxy&action=eth_getTransactionReceipt&txhash=0x02a08b6c106c1fbc8653981fc7e262b6ae95aa066aa47b2c7bad57563abf2341&apikey=YourApiKeyToken", "/result", "allHeaders")

スプレッドシートに貼り付けると、このような結果が得られました。

例えば、この辺りを見ると、誰から誰にトークンが移動しているのかを見ることができます。

トークンの量はこの辺りなのですが、これだとよくわかりませんね。

実はこちら、16進数になっています。

そのため、任意のサイトで、10進数に変換すれば、このように、トークン量を求めることができます。

https://hogehoge.tk/tool/number.html

4. AutoRefreshを終了する(重要です!)

最後に、「AutoRefresh」を使用した場合には、必ず忘れずに、トリガーを終了させてください。

5. 他のチェーンでも確認してみる

なお、全く同じようにして、EterscanやPolygonScnからもAPIが取得できます。

APIキートークンについては、○○Scanごとに違うので、個別に取得し、設定してみてください。

下に、参考として、PolygonScan, Etherscan(Goeli)で残高を取得するのAPIの取得のコマンドを載せておきます。

Polygonscan(mumbai)

=ImportJSON("https://api-testnet.polygonscan.com/api?module=account&action=balance&address=0x049E8641964cf92f38c50397e34CCE9C3f24dB5E&tag=latest&apikey=YourApiKeyToken", "/result", "allHeaders")

Etherscan(Goerli)

=ImportJSON("https://api-goerli.etherscan.io/api?module=account&action=balance&address=0x049E8641964cf92f38c50397e34CCE9C3f24dB5E&tag=latest&apikey=YourApiKeyToken", "/result", "allHeaders")

今回は以上です。

最後までありがとうございました。

Discussion