Google Script - REST API offentlige endepunkter

Sidst opdateret: 1. april 2025

Vores REST API offentlige endepunkter er tilgængelige via en simpel HTTP-anmodning (ligesom en webside anmodes via en webbrowser), så en API-klient til at importere markedsdata til et Google Sheet kan implementeres med blot et par linjer Google Script-kode.

Installation

  1. 1

    Opret et nyt Google Sheet eller åbn et eksisterende ark.

  2. 2

    Åbn scripteditoren via menuen Udvidelser -> Apps Script.

  3. 3

    Slet den viste standardkode (f.eks. Vælg alt og derefter Slet/Tilbage).

  4. 4

    Kopiér/indsæt Google Script API-koden (vist nedenfor) i scripteditoren.

  5. 5

    Valgfrit – Tilføj eventuelle yderligere brugerdefinerede funktioner, du har brug for (f.eks. for at kalde forskellige endepunkter eller returnere forskellige JSON-felter).

  6. 6

    Gem Google Script-koden via  ikonet (Gem projekt).

    General_SaveIcon_10052020.png

Anvendelse

Funktionen KAPI_Public() er ansvarlig for at oprette den passende URL og foretage HTTP-anmodningen til API'en. Funktionen KAPI_Public() kan kaldes direkte ved at indtaste følgende (eller lignende afhængigt af endepunktet og parametrene) i en Google Sheet-celle:

bash

Bash

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

=KAPI_Depth("XDGUSD", "5")

Funktionen KAPI_Public() returnerer den originale JSON-respons fra API'en, såsom følgende for ovenstående Depth endepunktseksempel:

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]]}}}

For at placere de individuelle felter/værdier i separate celler i Google Sheet kan yderligere brugerdefinerede funktioner kaldes for at parse JSON-responsen, såsom eksemplerne KAPI_Ticker() og KAPI_Depth() funktioner:

bash

Bash

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

=KAPI_Depth("XDGUSD", "5")

hvilket ville vise resultaterne svarende til følgende, hvor dataene ville være tilgængelige for enhver af de standard Google Sheets-funktioner (SUM, AVERAGE, COUNT osv.):

API_GoogleSheetExample_10052020.png

Google Script-kode for offentlige endepunkter:

Generel funktion, der skal inkluderes for kald til alle offentlige endepunkter:

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
}

Eksempler på funktioner, der er specifikke for et bestemt endepunkt:

Depth:

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
}

Ticker:

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
}

For at bruge ovenstående scripts skal du blot tilføje det generiske script til det endepunktsspecifikke 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
}

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
}

De decimal- og tusindtalsseparatorer, der vises i denne artikel, kan afvige fra de formater, der vises på vores handelsplatforme. Læs vores artikel om, hvordan vi bruger punkter og kommaer for mere information.