سایت کوین گکو (CoinGecko) با ردگیری بیش از ۸۰۰۰ ارز دیجیتال در بین ۴۰۰ صرافی، بزرگترین گردآورنده مستقل دادههای ارزهای دیجیتال در جهان است که ماموریتش امکان دسترسی آزاد به دادههای حوزه رمزارزهاست. در کنار دسترسی به دیتاهای بازار، شما میتوانید با استفاده از API، دادههای دلخواه خود را وارد گوگل شیت کرده و از آنها برای کارهای مختلفی مانند تحلیل استفاده کنید. در این مقاله، به آموزش وارد کردن داده های سایت کوین گکو در صفحات گوگل (Google Sheets) از طریق API میپردازیم. با میهن بلاکچین همراه باشید.
نحوه فراخوانی داده های سایت کوین گکو
با استفاده از این سایت، میتوانید اطلاعات مورد نیاز خود را به به روشی بهینه بدست آورید و به طور خودکار دادهها را بازخوانی کنید تا برگه شما همیشه به روز باشد. در این مطلب، به طور کامل نحوه دریافت داده های سایت کوین گکو و استفاده از آنها در صفحات گوگل را آموزش میدهیم. در ادامه قادر به ساخت موارد زیر خواهید بود:
- پورتفولیو ارز دیجیتال.
- واچ لیست ارزهای دیجیتال.
- انجام تحلیلهایی روی مجموعهای از ارزها (روی قیمت، حجم و غیره).
همچنین در این مقاله، نکاتی را گوشزد میکنیم که با استفاده از آنها، صفحات گوگل شما از مزایای زیر برخوردار باشند:
- استفاده از API سایت کوین گکو به صورت بهینه (دریافت قیمت، ارزش بازار و حجم مرتبط با ۲۵۰ رمزارز فقط با یک فراخوانی).
- قابلیت بروزرسانی خودکار Google Sheets.
صفحات گوگل شما ابزار مفید و قدرتمندی خواهد بود که به نیازهای شما به طور کامل پاسخ میدهد. در ادامه نحوه وارد کردن اطلاعات به گوگل شیت را مرحله به مرحله آموزش میدهیم.
گام ۱: برای وارد کردن دادهها و بازخوانی خودکار، اسکریپتهایی را به Google Sheets خود اضافه کنید:
اسکریپت ۱: ImportJSON – این اسکریپت به برگه شما اجازه میدهد تا دیتاهای کوین گکو را وارد کنید.
- یک صفحه (Sheet) جدید در گوگل باز کنید.
- در بخش منوی بالا سمت چپ، روی آیکون <> ویرایشگر اسکریپت کلیک کنید.
- با استفاده از دکمه + یک اسکریپت جدید اضافه کنید.
- از این لینک همه کد را کپی کرده و در کاربرگ وارد کنید.
- اسکریپت را ذخیره کنید و نام آن را ImportJSON بگذارید.
توجه: اسکریپت ImportJSON مورد استفاده در اینجا بسیار متنوع است؛ میتوانید دادهها را به روشهای مختلف وارد کنید و پس از آشنایی بیشتر، کد را دستکاری کنید.
اسکریپت ۲: autoRefresh – با این اسکریپت، برگه شما میتواند به طور خودکار بازخوانی شود.
مانند بالا، با استفاده از دکمه + یک اسکریپت جدید اضافه کنید.
همه کد زیر را کپی و در کادر اسکریپت وارد کنید، سپس اسکریپت را با نام 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;
}
گام ۲: فعالسازی بروزرسانی خودکار
برای اسکریپت شماره ۲ (autoRefresh)، باید تنظیمات کوچکی را انجام دهیم تا آن را فعال کنیم. ابتدا یک برگه جدید به نام doNotDelete ایجاد کنید. در مرحله بعد، یک تابع Trigger ایجاد کنید تا بازخوانی خودکار فعال شود. برای انجام آن:
- در بخش ابزارها روی <> کلیک کنید.
- یک Trigger جدید (گوشه سمت راست پایین) با تنظیمات زیر تنظیم کنید:
- triggerAutoRefresh
- Time-driven
- Minutes timer
- ۵ تا ۱۰ دقیقه (هر عددی کمتر از این مقادیر ممکن است مفید نباشد؛ زیرا در حافظه پنهان قرار میگیرند).
گام ۳: دریافت قیمت ۵۰۰ ارز برتر (و بیشتر) تنها با دو فراخوانی API از سایت کوین گکو
در یک صفحه جدید، خطوط زیر را وارد کنید:
=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 و غیره را نشان نمیدهد.
باید انتظار داشته باشید که لیستی از ۵۰۰ کوین با دادههایی که در بالا وارد کردهایم، به شرح زیر نمایش داده شود:
[tie_list type=”checklist”]
- نام کوین
- قیمت کوین
- تمام جزئیات بازار
- تغییر ۲۴ ساعته قیمت
- حجم معاملات ۲۴ ساعته
- بیشترین و کمترین قیمت ۲۴ ساعت گذشته
[/tie_list]
در مرحله بعدی، از VLOOKUP برای بیرون کشیدن دادههای مورد نیاز استفاده میکنیم.
گام ۴: استفاده از VLOOKUP برای دریافت قیمتها
اکنون شما یک جدولی شامل ۵۰۰ کوین در کوین کگو دارید، که به طور خودکار بروزرسانی میشود. اکنون به جدولبندی دادهها نیاز داریم. در زیر شرح مختصری از VLOOKUP آورده شده است:
- Search_key ← پارامتری است که مشخص میکنید قیمت کدام کوین را میخواهید.
- Range ← جدول دادههایی که فرمول باید روی آن اعمال شود.
- Index ← در آن جدول، زمانی که تطابق دیتا ایجاد شود، دادههای کدام ستون باید انتخاب شوند؟
- [is_sorted] ← مقدار ۰ را قرار دهید.
به عنوان مثال، برای به دست آوردن قیمت بیت کوین فرمول زیر را خواهید داشت. با توجه به جدول خود، فرمول را شخصیسازی کنید.
=VLOOKUP(Bitcoin, our big data table, 2 because Price is 2nd column in Data table, 0)
در این لینک یک نمونه آماده از پوتفولیو آمده است. آن را کپی کنید و تنها کافی است فیلد Name را ویرایش کنید (یا از منوی کشویی استفاده کنید) که با رنگ نارنجی مشخص شده است و باید به طور خودکار کوین را برای شما تغییر دهد.
این رویکرد قابل گسترش است. تمام دادههایی که از پلتفرم Coingecko به دست میآیند، فقط نیاز به ۱ فراخوانی API به ازای هر ۲۵۰ کوین، هر کدام با ۲۶ ویژگی مختلف داده (یا بیشتر، بسته به آنچه نیاز دارید)، دارند.
در انتهای این مقاله، شما یک شیت گوگل خواهید داشت، که در هر ۱۰ دقیقه، ۲ API فراخوانی میکند و قادر است اطلاعات قیمتی، حجم بازار، حجم معاملات و غیره ۵۰۰ رمزارز برتر بازار را نشان دهد. به هر حال، در گوگل شیت محدودتهایی نیز وجود دارند و این صفحات به هاست اشتراکی متصل هستند. بنابراین ممکن است حتی با فراخوانیهای بسیار کوچک نیز با ارورهایی مواجه شوید. این روش ارورها را حذف نمیکند؛ اما تعداد آنها را بسیار کم میکند. برای اطلاعات بیشتر، این پست را بخوانید.
برای کاربرانی که با محدودیتها دستوپنجه نرم میکنند و نیاز به چیزی قدرتمندتر دارند، پیشنهاد میکنیم که پلنهای API کوین گکو را از اینجا بررسی کنند. با این پلنها، حتی اگر دیتاهای شما گسترده باشد، میتوانید سریعا APIها را فراخوانی کنید. البته باید بدانید که استفاده از پلنهای API کوین گکو، برای کارها و تحلیلهای پیشرفتهتر است؛ اگر چیزی میخواهید که سریع و ساده بین اپهای وب و موبایل سینک یا همگامسازی شود، به پورتفولیوی Coingecko نگاه کنید، که با نمودارها، ردیابی تراکنشها، سود و زیان و موارد دیگر، به درستی کار میکند.
ضمیمه: منابع و لینکهایی برای راحتی کار شما:
فرمولی قدیمیتر و غیرقابل گسترش برای فراخوانیهای منفرد
برای دسترسی به دادههای سایت کوین گکو به روش سنتی، در گوگل شیت خود به بخش ابزارها بروید و روی <> کلیک کرده و یک اسکریپت جدید اضافه کنید و کدهای زیر را در آن قرار دهید:
/**
* Imports JSON data to your spreadsheet
* @param url URL of your JSON data as string
* @param xpath simplified xpath as string
* @customfunction
*/
function IMPORTJSONsingle(url,xpath){
try{
// /rates/EUR
var res = UrlFetchApp.fetch(url);
var content = res.getContentText();
var json = JSON.parse(content);
var patharray = xpath.split(".");
//Logger.log(patharray);
for(var i=0;i<patharray.length;i++){
json = json[patharray[i]];
}
//Logger.log(typeof(json));
if(typeof(json) === "undefined"){
return "Node Not Available";
} else if(typeof(json) === "object"){
var tempArr = [];
for(var obj in json){
tempArr.push([obj,json[obj]]);
}
return tempArr;
} else if(typeof(json) !== "object") {
return json;
}
}
catch(err){
return "Error getting data";
}
}
کد را ذخیره کرده و نام آن را به ImportJSONsingle تغییر دهید. ویرایشگر اسکریپت را ببندید و به کاربرگ گوگل خود بازگردید. فرمول ImportJSONsingle به شرح زیر است.
=ImportJSONsingle (“[API URL]”,”[JsonPath]”)
اگر با پیاده سازی JsonPath آشنایی ندارید، میتوانید به گیتهاب JsonPath که شامل توضیحات جامع در مورد JsonPath است مراجعه کنید. در زیر نمونههایی از فرمولهای بدست آوردن دادههای مرتبط با بیت کوین آورده شده است.
=ImportJSONsingle("https://api.coingecko.com/api/v3/coins/markets?vs_currency=usd&ids=bitcoin","0.current_price")
ارزش بازار بیتکوین:
=ImportJSONsingle("https://api.coingecko.com/api/v3/coins/markets?vs_currency=usd&ids=bitcoin","0.market_cap")
حجم ۲۴ ساعته BTC:
=ImportJSONsingle("https://api.coingecko.com/api/v3/coins/markets?vs_currency=usd&ids=bitcoin","0.total_volume")
سقف تاریخی اولین ارز دیجیتال:
=ImportJSONsingle("https://api.coingecko.com/api/v3/coins/markets?vs_currency=usd&ids=bitcoin","0.ath")
عرضه در گردش BTC:
=ImportJSONsingle("https://api.coingecko.com/api/v3/coins/markets?vs_currency=usd&ids=bitcoin","0.circulating_supply")
قیمت بیت کوین در ۳۰ می ۲۰۱۹، ساعت ۰۰:۰۰ UTC:
=ImportJSONsingle("https://api.coingecko.com/api/v3/coins/bitcoin/history?date=30-5-2019","market_data.current_price.usd")
ارزش بازار بیتکوین در ۳۰ می ۲۰۱۹، ساعت ۰۰:۰۰ UTC:
=ImportJSONsingle("https://api.coingecko.com/api/v3/coins/bitcoin/history?date=30-5-2019","market_data.market_cap.usd")
حجم ۲۴ ساعته بیت کوین در ۳۰ می ۲۰۱۹، ساعت ۰۰:۰۰ UTC:
=ImportJSONsingle("https://api.coingecko.com/api/v3/coins/bitcoin/history?date=30-5-2019","market_data.total_volume.usd")
توجه کنید که چگونه اسکریپت importJSONsingle به چندین فراخوانی برای دادههای یکسان (قیمت ارزهای دیجیتال، ارزش بازار، حجم) نیاز دارد، در حالی که نسخه جدیدتر (استفاده شده در بالا)، فقط با یک فراخوانی دادههای بسیار بیشتری را فرا میخواند.
سخن پایانی
در این مقاله، در مورد نحوه دریافت داده های سایت کوین گکو (CoinGecko) و وارد کردن آن در صفحات گوگل صحبت کردیم. همانطور که دیدید روش جدید سریعتر و کارآمدتر از روش سنتی بود؛ چراکه با استفاده از روش جدید، با تعداد فراخوانیهای کمتری میتوان اطلاعات را از API این سایت دریافت کرد. آیا تا به حال از API سایت کوین گکو استفاده کردهاید، نظرات خود را با میهن بلاکچین