Скрипт Google — публичные конечные точки REST API

Последнее обновление: 1 апр. 2025 г.

Наши публичные конечные точки REST API доступны через простой HTTP-запрос (так же, как веб-страница запрашивается через веб-браузер), поэтому клиент API для импорта рыночных данных в Google Таблицу может быть реализован всего несколькими строками кода Google Script.

Установка

  1. 1

    Создайте новую Google Таблицу или откройте существующую.

  2. 2

    Откройте редактор скриптов через меню Расширения -> Apps Script.

  3. 3

    Удалите отображаемый код по умолчанию (например, Выделить все, затем Удалить/Backspace).

  4. 4

    Скопируйте/вставьте код Google Script API (показан ниже) в редактор скриптов.

  5. 5

    Необязательно — добавьте любые дополнительные пользовательские функции, которые вам требуются (например, для вызова различных конечных точек или возврата различных полей JSON).

  6. 6

    Сохраните код Google Script с помощью значка (Сохранить проект).

    General_SaveIcon_10052020.png

Использование

Функция KAPI_Public() отвечает за создание соответствующего URL-адреса и выполнение HTTP-запроса к API. Функцию KAPI_Public() можно вызвать напрямую, введя следующее (или аналогичное, в зависимости от конечной точки и параметров) в ячейку Google Таблицы:

bash

Bash

=KAPI_Ticker("XBTUSD,ETHEUR,LTCUSD,XDGXBT,XDGUSD")

=KAPI_Depth("XDGUSD", "5")

Функция KAPI_Public() возвращает исходный ответ JSON от API, например, следующий для приведенного выше примера конечной точки Depth:

bash

Bash

{"error":[],"result":{"XETHZUSD":{"asks":[["231.74000","4.386",1583402326],["231.75000","27.337",1583402277],["231.76000","5.887",1583402311],["231.79000","36.280",1583402334],["231.80000","50.000",1583402299]],"bids":[["231.70000","18.534",1583402335],["231.67000","22.109",1583402335],["231.61000","7.930",1583402335],["231.60000","33.841",1583402335],["231.54000","115.017",1583402334]]}}}

Чтобы поместить отдельные поля/значения в отдельные ячейки Google Таблицы, можно вызвать дополнительные пользовательские функции для анализа ответа JSON, например, функции KAPI_Ticker() и KAPI_Depth():

bash

Bash

=KAPI_Ticker("XBTUSD,ETHEUR,LTCUSD,XDGXBT,XDGUSD")

=KAPI_Depth("XDGUSD", "5")

что отобразит результаты, аналогичные следующим, где данные будут доступны для любых стандартных функций Google Таблиц (SUM, AVERAGE, COUNT и т. д.):

API_GoogleSheetExample_10052020.png

Код Google Script для публичных конечных точек:

Общая функция, которая должна быть включена для вызовов всех публичных конечных точек:

bash

Bash

function KAPI_Public(endpoint, parameters) {
  http_response = UrlFetchApp.fetch(
    'https://api.kraken.com/0/public/' + endpoint + '?' + parameters
  )
  api_data = http_response.getContentText()
  return api_data
}

Примеры функций, специфичных для конкретной конечной точки:

Глубина:

bash

Bash

function KAPI_Depth(currency_pair, depth) {
  api_data = JSON.parse(
    KAPI_Public("Depth", "pair=" + currency_pair + "&count=" + depth)
  )
  api_results = new Array()
  for (count = 0; count < parseInt(depth); count++) {
    api_results.push([
      api_data['result'][currency_pair]['bids'][count][0], 
      api_data['result'][currency_pair]['bids'][count][1], 
      api_data['result'][currency_pair]['asks'][count][0], 
      api_data['result'][currency_pair]['asks'][count][1]
    ])
  }
  return api_results
}

Тикер:

bash

Bash

function KAPI_Ticker(currency_pairs) {
  api_data = JSON.parse(
    KAPI_Public("Ticker", "pair=" + currency_pairs)
  )
  api_results = new Array()
  for (name in api_data['result']) {
    api_results.push([
      name, 
      api_data['result'][name]['a'][0], 
      api_data['result'][name]['a'][2], 
      api_data['result'][name]['b'][0], 
      api_data['result'][name]['b'][2], 
      api_data['result'][name]['c'][0], 
      api_data['result'][name]['c'][1]
    ])
  }
  return api_results
}

Чтобы использовать приведенные выше скрипты, просто добавьте общий скрипт к скрипту, специфичному для конечной точки:

bash

Bash

function KAPI_Public(endpoint, parameters) {
  http_response = UrlFetchApp.fetch(
    'https://api.kraken.com/0/public/' + endpoint + '?' + parameters
  )
  api_data = http_response.getContentText()
  return api_data
}

function KAPI_Depth(currency_pair, depth) {
  api_data = JSON.parse(
    KAPI_Public("Depth", "pair=" + currency_pair + "&count=" + depth)
  )
  api_results = new Array()
  for (count = 0; count < parseInt(depth); count++) {
    api_results.push([
      api_data['result'][currency_pair]['bids'][count][0], 
      api_data['result'][currency_pair]['bids'][count][1], 
      api_data['result'][currency_pair]['asks'][count][0], 
      api_data['result'][currency_pair]['asks'][count][1]
    ])
  }
  return api_results
}

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

Нужна дополнительная помощь?