みなさんこんにちは!Stir labリサーチャーのプリズム(@prism_cryptos)と申します!
今回はCoinGecko Japan様(@CoinGeckoJapan)ご協力のもとで、CoinGecko上の暗号資産データをGoogleシートに取り込む(インポートする)方法を解説させていただきます!
「自身のGoogleシート上で暗号資産の管理・分析ツールを構築したい!」という方は、この記事を通してCoinGecko APIの基礎的な使い方を学びましょう!
なお本記事は、CoinGecko様のサイトにて公開されている英語の記事「Import CoinGecko Cryptocurrency Data into Google Sheets [Updated 2021]」を日本語訳したものとなっております!
※元の記事で紹介された操作で分かりにくい箇所に関しては、一部内容を追記しています。
Coingeckoのapiをスプレッドシートに取り込もう!
CoinGeckoは、世界最大規模を誇る暗号資産データの情報収集サイトです。
世界中の400の取引所にて8,000種類以上の暗号資産の情報を追跡しており、皆様が暗号資産データへ容易にアクセスできる社会の実現をミッションに掲げています。
CoinGeckoが提供しているAPIを使用することで、世界で最も網羅性の高い暗号資産のデータベースへアクセスでき、あなたが使用しているツールの利便性をより高めることが可能です。
このガイドでは、GoogleシートにおけるCoinGecko APIの使用方法を解説いたします。
このガイドを読むことで、最終的に以下のことが可能となります。
- 暗号資産ポートフォリオに特化したシートの作成
- 暗号資産リストのトラッカー作成 — 個別または全体のリスト
- 通貨間比較の動向分析(出来高の変化、価格の変化など)
加えてこのガイドでは、次の2つのような処理が可能になるためのノウハウも提供いたします。
- CoinGecko APIの最適な使用(1 API当たり250種類の暗号資産に関する価格、時価総額などを取得可能)
- データを自動的に更新し、シートを常に最新状態に保つ
本ガイドに記述した操作を行うことで、お客様のスプレッドシートは便利で強力な暗号資産データの追跡ツールとなります。
ただし本ガイドの操作の実行には、少し時間を要するかもしれません。
もし「暗号資産のポートフォリオ管理ができれば十分!」というお客様がいらっしゃる場合は、CoinGeckoが提供しているポートフォリオサービスをご利用いただくのがおススメです!
なお、マイクロソフトのExcelにて同様の操作を行いたい場合は、コチラのページ(英語)をご覧ください!
それでは始めましょう!
ステップ1:スプレッドシートにスクリプト(プログラム)を追加し、データの取得と自動更新を実行しよう!
スクリプト1:ImportJSON(GoogleシートにCoinGecko APIのデータを取り込むためスクリプト)
①:新しいGoogleシートを開きます。 (Googleアカウントにログインした状態で、このリンクから移動しましょう)
②:Googleシートが開いたら、メニューバーにある「拡張機能」から「Apps Script」を選択しましょう。
③:Apps Scriptの画面が開くと「無題のプロジェクト」という記載とともに、左側のバーに「コード.gs」というスクリプトが開かれたページが出現します。
「コード.gs」というものが、スクリプト(プログラム)になります。
④まずデフォルトで記載されているコードを全て消去し、同時に「コード.gs」の名前変更を行いましょう。
「コード.gs」を「ImportJSON.gs」という名前に変換しましょう。
⑤:④までの操作が完了したら、このGitHubのページから「ImportJSON」のスクリプトをコピーし、自身のスクリプトにペーストしましょう。
(非常に大きいスクリプトなので、この記事内には記載できません!)
⑥:最後にプロジェクト名を「無題のプロジェクト」から任意の名前へ変更してから、プロジェクト全体を保存しましょう。
この記事ではプロジェクト名を「CoinGecko test API」としておきます。
メモ:ここで使われたImportJSONスクリプトは、非常に汎用性が高いものです。
少し改変すると多種多様なデータを取り込むことができるので、CoinGecko APIの操作に慣れたらいろいろ試してみると良いでしょう。
スクリプト2:autoRefresh(Googleシートの情報を自動更新するためのスクリプト)
スクリプト1と同様の手順を踏んで、autoRefreshを組み込みましょう。
手順は以下の通りです。
①ファイルの「+」ボタンから新しいスクリプトを生成し、autoRefreshとして保存します。
②autoRefresh.gsに以下のコードをコピー&ペーストしてください。なおプロジェクトの保存も忘れずに行いましょう。
このスクリプトは、一定間隔であなたのGoogleシートを自動更新するものです。
autoRefreshのコードは以下の通りです。
/** * This function by Vadorequest generates a random number in the "randomNumber" sheet. * * It needs to be triggered with a Google Apps Scripts trigger at <https://script.google.com/home/:> * - Select project and add trigger * - Choose which function to run: triggerAutoRefresh * - Select event source: Time-driven * - Select type of time based trigger: Minutes timer * - Select minute interval: 10 minutes (to avoid too many requests) **/ // Updates cell A1 in "randomNumber" with a random number function triggerAutoRefresh() { SpreadsheetApp.getActive().getSheetByName('doNotDelete').getRange(1, 1).setValue(getRandomInt(1, 200)); } // Basic Math.random() function function getRandomInt(min, max) { min = Math.ceil(min); max = Math.floor(max); return Math.floor(Math.random() * (max - min + 1)) + min; }
ステップ2:Coingeckoのapiの自動更新を実行してみよう!
スクリプト2(autoRefresh.gs)を適切に動作させるためには、いくつかの設定を施す必要があります。
2ステップで終わるので、さくっと終わらせちゃいましょう!
ステップ1
まず新しいシートとして「doNotDelete」という名前のシートを作成します。
ステップ2
次に自動更新を行うための専用のトリガー(Googleシート関数とも言う)を作成します。
必要な手順は以下の通りです。
- Apps Scriptを開きます。
- 新しいトリガー(Googleシート関数)を以下の手順の通りに作成します。
①トリガーの設定ボタンをクリック
②「新しいトリガーを作成します。」をクリック
③トリガーを以下の画像の通りに設定
なお「時間の間隔を設定」の項目は、「5分おき」または「10分おき」に設定してください。
それよりも短い時間に設定してしまうと、エラーが発生する場合があります。
④ポップアップ画面にて自身のGoogleアカウントを選択します。
⑤次のページで「詳細を表示」をクリックして、以下画像の位置にあるリンクをクリックしてください。
⑥最後に「許可」をクリックしてください。この許可によって、CoinGecko APIがあなたのGoogle シートに対して書き込みを行うことができるようになります。
これで自動更新の設定は完了です!
いよいよ次は、シートへのデータ読み込みを行います!
ステップ3:上位500位の暗号資産価格の取得を、2種類のapi呼び出しで実行してみよう!
ワークシートのA1セルに、以下のコマンドを入力してみましょう。
=ImportJSON("<https://api.coingecko.com/api/v3/coins/markets?vs_currency=usd&order=market_cap_desc&per_page=250&page=1&sparkline=false","/name,/current_price,/market_cap,/price_change,/total_volume,/high_24h,/low_24h","noTruncate>",doNotDelete!$A$1)
ワークシートのA252セルに、以下のコマンドを入力してみましょう。
=ImportJSON("<https://api.coingecko.com/api/v3/coins/markets?vs_currency=usd&order=market_cap_desc&per_page=250&page=2&sparkline=false","/name,/current_price,/market_cap,/price_change,/total_volume,/high_24h,/low_24h","noTruncate,noHeaders>",doNotDelete!$A$1)
メモ:A252セルで実行されたコマンドは、パラメーターとして"noHeaders"を含んでいます。
そのため "Current_price" や "Market_cap" といったヘッダー(項目名、列名)を表示しません!
上記のようなコマンドを適切に実行することで、時価総額上位500位の暗号資産のリストが表示されます。表示されるデータは以下表の通りとなっています。
データの種類 | 説明 |
---|---|
Name | 暗号資産の名前 |
Current Price | 暗号資産の(現在)価格 |
Market Cap | 全ての時価総額の詳細 |
Price_Change | 直近24時間の価格の変動割合 |
Total Volume | 直近24時間の出来高 |
High_24h | 直近24時間での高値 |
Low_24h | 直近24時間での安値 |
次のステップでは、VLOOKUP関数を用いて必要なデータをピンポイントで抽出する操作を解説します。
ステップ4:VLOOKUP関数を実行して価格データを取得しよう!
以上の操作によってGoogleシートに自動更新でCoinGecko上の時価総額上位500位の暗号資産のデータテーブルが手に入りました。
次のステップでは、このテーブルをあなた好みにカスタマイズしましょう!
もしVLOOKUP関数に慣れている方は、このセクションは読み飛ばしていただいて問題ないです。
以下でVLOOKUP関数の引数に関して、軽く説明を行います。
例えばビットコインの価格を取得するためには、以下のコマンドを入力する必要があります。
=VLOOKUP(Bitcoin, our big data table, 2 because Price is 2nd column in Data table, 0)
各パラメーターの説明は以下表の通りです。
番号 | 引数名 | 説明 |
---|---|---|
① | search_key | このキーは簡単に言うと、「私はビットコインに関するデータが欲しい」と宣言するものです |
② | range | データを探索する範囲をします |
③ | index | どの列のデータを取得するかを指定します |
④ | [is_sorted] | ここは0(ゼロ)としておきましょう |
他の暗号資産に関しても、引き続き適切なテーブルの列番号に合わせることで、テーブルを完成させることができます。
下の表は、Googleシートで作成した最終的な暗号資産ポートフォリオの一例です。 コチラのページからGoogleシートの実例がご覧いただけます。
このGoogleシートをコピーし、オレンジ色で強調されている ”Name” の部分を編集(またはドロップダウンリストから選択!)することで、あなたが選択した暗号資産に関するデータに自動的に切り替わります。
新たな行を追加して全てのコマンドをコピーすることでも、新たな分析対象の通貨を追加することが可能です。
この方法は非常に拡張性があります。
上記の操作を行うことで、CoinGecko API を通して呼び出し1回につき250種類の暗号資産、およびそれぞれの暗号資産に関する26種類のデータ(ないし、あなたのニーズに沿ったより多くのデータ)が取得できるポートフォリオ管理ツールを構築できます。
Coingeckoのapiを使って、スプレッドシートに取り込む方法まとめ
本ガイドの終わりには、皆様の手元には5~10分間に2つのAPI呼び出しを行うことで時価総額上位500位の暗号資産に関する価格、時価総額、出来高などを出力するワークシートがあります。
しかしながらこれをGoogleシート上で使用する場合、GoogleシートはごくわずかなAPI呼び出し回数で制限(#ERRORと表示される場合)が発生する可能性があり、大変制限が厳しめです。これはGoogleシートが共有ホスティングに依存しているためです。
上記の制限に対する対案については、こちらの投稿をご覧ください。この方法で#ERRORがなくなるわけではありませんが、若干の緩和は期待できます。
API呼び出し回数の制限を解除してより強力なツールを構築したいと考えているユーザー様は、CoinGeckoのAPIプランをチェックすることをお勧めします。より複雑かつ大規模なデータ処理を行おうとすると、API呼び出しがかなり早く蓄積されてしまうことでワークシートのアップグレードに苦労することになるかもしれません。そのような場合は、より上位のAPIプランをご検討ください。
繰り返しになりますが、本記事の内容は高度な作業や分析用途向けに作成されています。
もし、より迅速かつ簡単に自身の暗号資産管理が可能なツールをお探しであれば、CoinGecko Portfolioをご利用ください。
チャートや取引履歴の閲覧、利益と損失の確認、その他様々な機能がご利用いただけます。
Twitterでも暗号資産に関する情報発信をしています!
Twitterはコチラ⇩
運営:Stir(@Stir_Network_JP)
筆者:プリズム(@prism_cryptos)
参考文献
- CoinGecko API Documentation
- CoinGecko API Plans – for all your scaling needs!
- CoinGecko API Token List on G.sheets (ids to copy)
- CoinGecko.com