Пишем простое обращение к 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
Документация:
Мы:
Канал “Google Таблицы” в Телеграме