May 12, 2021

Пишем простое обращение к API на Google Apps Script

Друзья, недавно для своего клиента М. я сделал обращение к API площадки, которая занимается криптовалютой.

В этой статье попробуем достать из этого API список проектов (криптовалют), которые есть на площадке, разбираясь с каждым этапом отдельно.

С чего начнём

Наш главный документ – это документация API, в документации есть всё (обычно 😁): как получить ключ, возможные методы обращение к API c примерами.

Документация нашей площадки: https://api-docs-v2.flipsidecrypto.com/#how-to-get-access

1. Получаем api-ключ

Тут всё просто – находим в документации "How to get access", переходим по ссылке, регистрируемся и нажимаем "Create Access Key".

Копируем ключ.

2. Берём ключ и делаем запрос в браузере

Напомню, что мы получаем список криптовалют, которые есть на площадке. Наш метод – Get Projects.

Ниже - скриншот из документации.

Из скриншота можно понять четыре вещи:

1) тип запроса, который нам нужен: GET

2) ссылка на метод: https://api.flipsidecrypto.com/api/v2/metrics/projects?api_key={{api_key}}

3) параметр – только api_key и он подставляется в ссылку

4) при успешном вызове API вернёт нам объект, с массивом объектов (в каждом объекте - один проект) с ключами: project_id, name, slug, cmc_id, symbol

Собираем ссылку руками и просто запускаем её в браузере (GET-запрос не требует передачи тела и открывается просто в браузере)

Супер, что-то выводится, значит метод и ключ – работают, теперь автоматизируем.

3. Автоматизируем это

Все запросы, GET, POST, ..., отправляются из Google Apps Script с помощью метода UrlFetchApp.fetch (или fetchAll, если вы хотите отправлять запросы пачкой, как мы делали здесь)

Итак, переходим к практике, код. Вызываем метод, декодируем и превращаем в объект ответ:

function давай_уже_скрипт() {

//Простой GET отправляется с помощью UrlFetchApp.fetch(наша ссылка на метод + ключ) без дополнений.

const response = UrlFetchApp.fetch('https://api.flipsidecrypto.com/api/v2/metrics/projects?api_key=f850915e-72d8-49d0-967c-4c4b17a3a254');

//Декодируем строку ответа

const content = response.getContentText();

//Превращаем всё еще строку в объект, с которым можно работать и выводим в лог

const result = JSON.parse(content);

Logger.log(result);

}

В логе видим такое:

Это объект, если его привести к читабельному виду, то он будет выглядеть как на скриншоте ниже. Внутри него есть объект status (информация о вашем запросе) и объект data, внутри которого массив объектов проектов, которые есть на площадке, то, что мы и хотели получить.

Дописываем скрипт, парсим результат

//обращаемся к массиву data внутри ответа

const data = result.data

//задаём пустой массив

const arr = [];

//обходим data в цикле, обращаясь к каждому внутреннему объекту и вставляем его данные в новый массив

for (n in data) {

const coin = data[n];

arr.push(Object.values(coin));

}

Logger.log(arr)

Всё, теперь вместо сложного объекта с объектами внутри мы получаем привычную структуру (ряд строк, массив массивов, лист листов, Игорь – привет), которую можно вставить в нашу Таблицу.

Добавляем еще пару строк кода и вставляем данные в Таблицу:

const sh = SpreadsheetApp.getActive().getSheetByName('PROJECTS');

sh.getRange(2, 1, arr.length, arr[0].length).setValues(arr);

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

Код целиком: https://pastebin.com/eWs6r0vE

Документация:

Fetch

getContentText

JSON.parse

Object.values

Object, for..in

getSheetByName

setValues


Мы:

Канал “Google Таблицы” в Телеграме

Оглавление канала — все статьи

Наш чат в Телеграме

Донаты