Google Script - Δημόσια τελικά σημεία REST API

Τελευταία ενημέρωση: 1 Απριλίου 2025

Τα δημόσια τελικά σημεία REST API μας είναι προσβάσιμα μέσω μιας απλής αίτησης HTTP (όπως ακριβώς ζητείται μια ιστοσελίδα μέσω ενός προγράμματος περιήγησης ιστού), οπότε ένας API client για την εισαγωγή δεδομένων αγοράς σε ένα Google Sheet μπορεί να υλοποιηθεί με λίγες μόνο γραμμές κώδικα Google Script.

Εγκατάσταση

  1. 1

    Δημιουργήστε ένα νέο Google Sheet ή ανοίξτε ένα υπάρχον φύλλο.

  2. 2

    Ανοίξτε το πρόγραμμα επεξεργασίας σεναρίων μέσω του μενού Extensions -> 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 Sheet:

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 Sheet, μπορούν να κληθούν πρόσθετες προσαρμοσμένες συναρτήσεις για την ανάλυση της απόκρισης JSON, όπως οι συναρτήσεις KAPI_Ticker() και KAPI_Depth() του παραδείγματος:

bash

Bash

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

=KAPI_Depth("XDGUSD", "5")

οι οποίες θα εμφάνιζαν τα αποτελέσματα παρόμοια με τα ακόλουθα, όπου τα δεδομένα θα ήταν προσβάσιμα σε οποιαδήποτε από τις τυπικές συναρτήσεις των Google Sheets (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
}

Παραδείγματα συναρτήσεων που είναι ειδικές για ένα συγκεκριμένο τελικό σημείο:

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
}

Για να χρησιμοποιήσετε τα παραπάνω σενάρια, απλώς προσθέστε το γενικό σενάριο στο σενάριο που αφορά το συγκεκριμένο τελικό σημείο:

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
}

Οι διαχωριστές δεκαδικών και χιλιάδων που εμφανίζονται σε αυτό το άρθρο ενδέχεται να διαφέρουν από τις μορφές που εμφανίζονται στις πλατφόρμες συναλλαγών μας. Ανατρέξτε στο άρθρο μας σχετικά με τον τρόπο χρήσης σημείων και κομμάτων για περισσότερες πληροφορίες.

Χρειάζεστε περισσότερη βοήθεια;