# Eth-google sheets на API

By [Thor Lab](https://paragraph.com/@th0masi) · 2023-03-26

---

Как уже только я не предлагал использовать таблицы, писал множество формул, но все они имели один огромный недостаток - ограничение.

У гугла стоит стоит ограничение на ~20 запросов в минуту и ~200 запросов в час. Это очень сильно бесило, когда у тебя, к примеру, 100 аккаунтов, а гугл не может загрузить и посчитать балансы всех.

Но я нашел выход, я написал свои формулы при помощи Etherscan API, в чем преимущество:

*   Количество запросов ~**15**/сек, **300 000**/день
    
*   Больше данных для импорта
    
*   **Бесплатное API**
    

На текущий момент написал только для блокчейна Ethereum, надеюсь мне будет не лень написать для большинства других блокчейнов и я сделаю это в ближайшее время, следите за анонсами в TG: [**Thor Lab**](https://t.me/thor_lab)

Начнем..

Ключи API
---------

Для начала нам нужно получить ключи API (опять же они бесплатные). Для этого нужно [**зарегистрироваться**](https://etherscan.io/register) на etherscan.

![](https://storage.googleapis.com/papyrus_images/14d28219512c17168fd84923c63f7cb261d7c5f9857f46ea8232fd3e37536f1f.png)

После регистрации и авторизации идем [**сюда**](https://etherscan.io/myapikey)

![](https://storage.googleapis.com/papyrus_images/4172e5a2031c21a1eb43756460a2792fdbaa6ecd569a2701b7c1893e63f50e11.png)

Нажимаем на **+Add**, придумываем названия и генерируем себе 3 ключа

![](https://storage.googleapis.com/papyrus_images/118932a4d9284593ecbbafd4fced44080bb3913565796c18dbc03056417a2f5a.png)

![](https://storage.googleapis.com/papyrus_images/4172e5a2031c21a1eb43756460a2792fdbaa6ecd569a2701b7c1893e63f50e11.png)

Таблица
-------

Теперь переходим в [**таблицу**](https://docs.google.com/spreadsheets/d/1MVFPftQxb3hXF2Gbo9ke-y3ZUu96ljAFrWrarXeUnRA/edit?usp=sharing)

![](https://storage.googleapis.com/papyrus_images/8cc24a3db86b4e873b94f31a1995d1f0237400d75f5af93728a0aed33fe3b997.png)

Думаю что к чему понятно:

**Wallets** - столбец кошельков, вставляем с **A2**

**BAL $ETH** - баланс эфира

**to USD** - баланс эфира в $ (курс автоматически подтягивается в ячейку L7)

**Count txns** - количество транзакций в сети эфира

**Last txn** - когда последний раз была транзакция на кошельке

**BAL $USDT** - баланс USDT

**BAL $USDC** - баланс USDC

**$CUSTOM** - вы можете вставить любой адрес контракта в R9 (Custom $contract) и получить столбец с балансами этого токена.

Столбец **L** суммирует все балансы.

**Custom $contract** - сюда можно поместить любой токен-контракт, чтобы посмотреть балансы токенов

**Etherscan API** - сюда суем 3 API ключа

Для того чтобы скопировать к себе таблицу нужно нажать на **Файл -> Создать копию**

![](https://storage.googleapis.com/papyrus_images/03080f6aa0c5851d7998e569f9073cdb8508a95c00680dba51c4c622c3040d0f.png)

![](https://storage.googleapis.com/papyrus_images/c525fb284687972ddbf14355aba97a96ab75a0f671f11225cd72ce7ac41750c0.png)

Можем поменять название, файлы Apps Script нужно оставить прикрепленными, для того чтобы кастомные формулы работали!

После копирования, таблица сохранится у вас на диске и доступ к ней будете иметь **только вы**!

После копирования вставьте список **API** ключей и список кошельков, загрузка всех данных займет до несколько минут. Я так же добавил параметр нулевого значения, функция не будет обращается к API, если кошелька в B-столбце нету, если же он есть функция будет обновлять данные примерно **каждые ~3 секунды**.

Кому интересны формулы подробнее о них:

`=getEthBalance(ячейка; apiKey)` - получает баланс эфира, округляет до 4 знаков после запятой

`=getEthTxCount(ячейка; apiKey)` - считает количество транзакций на кошельке

`=getLastTransactionTime(ячейка; apiKey)` - проверяет время последней транзакций, считает от текущего (выводит минуты/часы/дни в зависимости от того сколько прошло времени)

`=getTokenBalance(токенКонтракт;ячейка; apiKey)` - получает балансы токенов, единицы измерения подходящей для стейблов (10^6)

`=getCustomTokenBalance(токенКонтракт;ячейка; apiKey)` - получает балансы токенов, единицы измерения подходящей для большинства токенов ERC-20 (10^18)

`=customSum(первая_ячейка:последняя_ячейка)` \- суммирует большинство ячеек, это кастомная формула, т.к. родная SUM не умеет нормально интерпретировать вывод цифр.

`=EthBalance(колво_eth;цена_eth)` \- считает оценочную стоимость эфира по актуальному прайсу в google.

Заключение
----------

Не все формулы идеальные, будет желание и время возможно буду оптимизировать, в течение недели возможно напишу под другие блокчейны, под какой написать в первую очередь пишите в комментах крч.

Любые вопросы можно задавать в чате [**Thor Chat**](https://t.me/thorlab_chat) (торчат)

Подписывайтесь на [**Thor Lab**](https://t.me/thor_lab) (основной канал), может будет полезно, часто пытаюсь придумать интересные вещи.

---

*Originally published on [Thor Lab](https://paragraph.com/@th0masi/eth-google-sheets-api)*
