গুগল স্ক্রিপ্ট - REST API ব্যক্তিগত এন্ডপয়েন্ট

সর্বশেষ আপডেট: ১ এপ্রি, ২০২৫

আমাদের REST API প্রমাণীকৃত এন্ডপয়েন্টগুলি একটি সাধারণ HTTP অনুরোধের মাধ্যমে অ্যাক্সেসযোগ্য (যেমন একটি ওয়েব ব্রাউজারের মাধ্যমে একটি ওয়েব পৃষ্ঠা অনুরোধ করা হয়), তাই Google Sheet-এ বাজারের ডেটা আমদানি করার জন্য একটি API ক্লায়েন্ট মাত্র কয়েকটি Google Script কোডের লাইনের মাধ্যমে প্রয়োগ করা যেতে পারে।

ইনস্টলেশন

  1. 1

    একটি নতুন Google Sheet তৈরি করুন অথবা একটি বিদ্যমান শীট খুলুন।

  2. 2

    Extensions -> Apps Script মেনুর মাধ্যমে স্ক্রিপ্ট এডিটর খুলুন।

  3. 3

    প্রদর্শিত ডিফল্ট কোডটি মুছে ফেলুন (উদাহরণস্বরূপ, সব নির্বাচন করুন তারপর মুছুন/ব্যাকস্পেস)।

  4. 4

    Google Script API কোড (নীচে দেখানো হয়েছে) স্ক্রিপ্ট এডিটরে কপি/পেস্ট করুন।

  5. 5

    আপনার Kraken অ্যাকাউন্ট থেকে একটি API কী ব্যবহার করতে উদাহরণ API কী আপডেট করুন।

  6. 6

    ঐচ্ছিক - আপনার প্রয়োজনীয় যেকোনো অতিরিক্ত কাস্টম ফাংশন যোগ করুন (উদাহরণস্বরূপ, বিভিন্ন এন্ডপয়েন্ট কল করতে বা বিভিন্ন JSON ফিল্ড ফেরত দিতে)।

  7. 7

    Google Script কোডটি

    (প্রজেক্ট সেভ করুন) আইকনের মাধ্যমে সেভ করুন।

    Save Icon

SaveImageIcon

ব্যবহার

KAPI_Private() ফাংশনটি উপযুক্ত URL তৈরি করা, প্রমাণীকরণ স্বাক্ষর গণনা করা এবং API-তে HTTP অনুরোধ করার জন্য দায়ী। Google Sheet সেলের মধ্যে নিম্নলিখিত (বা অ্যাকাউন্ট আইডি, এন্ডপয়েন্ট এবং প্যারামিটারের উপর নির্ভর করে অনুরূপ) প্রবেশ করিয়ে KAPI_Private() ফাংশনটি সরাসরি কল করা যেতে পারে:

bash

Bash

=KAPI_Private("TEST", "Balance", "")

=KAPI_Private("TEST", "TradeBalance", "asset=xdg")

=KAPI_Private("TEST", "OpenOrders", "userref=886794735")

KAPI_Private() ফাংশনটি API থেকে আসল JSON প্রতিক্রিয়া ফেরত দেয়, যেমন উপরের ব্যালেন্স এন্ডপয়েন্ট উদাহরণের জন্য নিম্নলিখিতটি:

bash

Bash

{"error":[],"result":{"ZUSD":"16.4272","ZEUR":"0.3880","ZJPY":"0.45","KFEE":"10368.39","XXBT":"0.0000000072","XXRP":"0.00000000","XLTC":"0.0000000100","XXDG":"13997.00000000","XXLM":"100.00000000"}}

Google Sheet-এর মধ্যে পৃথক ক্ষেত্র/মানগুলিকে আলাদা সেলে রাখার জন্য, JSON প্রতিক্রিয়া পার্স করার জন্য অতিরিক্ত কাস্টম ফাংশন কল করা যেতে পারে, যেমন KAPI_Balance() এবং KAPI_OpenOrders() ফাংশনগুলির উদাহরণ:

  • =KAPI_Balance("TEST")

  • =KAPI_OpenOrders("TEST")

bash

Bash

=KAPI_Balance("TEST")

=KAPI_OpenOrders("TEST")

এটি নিম্নলিখিত ফলাফলের মতো দেখাবে, যেখানে ডেটা যেকোনো স্ট্যান্ডার্ড গুগল শীট ফাংশন (SUM, AVERAGE, COUNT, ইত্যাদি) দ্বারা অ্যাক্সেসযোগ্য হবে:

API_GoogleSheetOutputEndpoints_10062020.png

ব্যক্তিগত এন্ডপয়েন্টগুলির জন্য গুগল স্ক্রিপ্ট কোড:

প্রমাণীকরণ অ্যালগরিদম:

bash

Bash

API_Public_Key = { 
  'TEST': 'INSERT YOUR API PUBLIC KEY' 
}

API_Private_Key = { 
  'TEST': 'INSERT YOUR API PRIVATE KEY' 
}

function KAPI_Private(acc_id, endpoint, parameters) {
  Utilities.sleep(Math.random() * 100)

  api_key = API_Public_Key[acc_id]
  api_secret = Utilities.base64Decode(API_Private_Key[acc_id])
  api_path = Utilities.newBlob('/0/private/' + endpoint).getBytes()
  api_nonce = Date.now().toString()
  api_post = 'nonce=' + api_nonce + '&' + parameters

  api_sha256 = Utilities.computeDigest(
    Utilities.DigestAlgorithm.SHA_256, 
    api_nonce + api_post
  )
  api_hmac = Utilities.computeHmacSignature(
    Utilities.MacAlgorithm.HMAC_SHA_512, 
    api_path.concat(api_sha256), 
    api_secret
  )
  api_signature = Utilities.base64Encode(api_hmac)

  http_options = {
    'method': 'post', 
    'payload': api_post, 
    'headers': {
      'API-Key': api_key, 
      'API-Sign': api_signature
    }
  }
  http_response = UrlFetchApp.fetch(
    'https://api.kraken.com/0/private/' + endpoint, 
    http_options
  )
  api_data = http_response.getContentText()
  return api_data
}

উপরের প্রমাণীকরণ অ্যালগরিদম সহ নিম্নলিখিত স্ক্রিপ্টগুলি ব্যবহার করতে, কেবল ফাংশনটি উপরের স্ক্রিপ্টে যুক্ত করুন।

*অনুগ্রহ করে মনে রাখবেন যে সমস্ত ব্যক্তিগত এন্ডপয়েন্টের জন্য প্রমাণীকরণ অ্যালগরিদম বাস্তবায়ন প্রয়োজন।*

ব্যালেন্স:

bash

Bash

// Formula to use in Excel cell: '=KAPI_Balance("TEST")
function KAPI_Balance(acc_id) {
  acc_balances_json = JSON.parse(
    KAPI_Private(acc_id, 'Balance', '')
  )
  acc_balances = new Array()
  for (name in acc_balances_json['result']) {
    acc_balances.push([
      name, 
      parseFloat(acc_balances_json['result'][name])
    ])
  }
  return acc_balances
}

বর্ধিত ব্যালেন্স:

bash

Bash

// Formula to use in Excel cell: '=KAPI_BalanceEx("TEST")

function KAPI_BalanceEx(acc_id) {
  acc_balances_json = JSON.parse(KAPI_Private(acc_id, 'BalanceEx', ''))
  acc_balances = new Array
  for (name in acc_balances_json['result']) {
    acc_balances.push([
      name,
      parseFloat(acc_balances_json['result'][name]['balance']),
      parseFloat(acc_balances_json['result'][name]['hold_trade']),
      parseFloat(acc_balances_json['result'][name]['credit'] ? acc_balances_json['result'][name]['credit'] : '') || 0,
      parseFloat(acc_balances_json['result'][name]['credit_used'] ? acc_balances_json['result'][name]['credit_used'] : '') || 0
    ]);
  }
  return acc_balances
}

ট্রেড ব্যালেন্স:

bash

Bash

// Formula to use in Excel cell: '=KAPI_TradeBalance("TEST", "ASSET")'

function KAPI_TradeBalance(acc_id, currency) {
  acc_balances_json = JSON.parse(
    KAPI_Private(acc_id, 'TradeBalance', 'asset=' + currency)
  )
  acc_balances = new Array()
  for (name in acc_balances_json['result']) {
    acc_balances.push([
      name, 
      parseFloat(acc_balances_json['result'][name])
    ])
  }
  return acc_balances
}

খোলা অর্ডার:

bash

Bash

// Formula to use in Excel cell: '=KAPI_Private("TEST","OpenOrders","")'

function KAPI_OpenOrders(acc_id) {
  acc_orders_json = JSON.parse(
    KAPI_Private(acc_id, 'OpenOrders', '')
  )
  acc_orders = new Array()
  for (name in acc_orders_json['result']['open']) {
    acc_orders.push([
      name, 
      acc_orders_json['result']['open'][name]['descr']['pair'], 
      acc_orders_json['result']['open'][name]['descr']['type'], 
      parseFloat(acc_orders_json['result']['open'][name]['descr']['price']), 
      parseFloat(acc_orders_json['result']['open'][name]['vol']), 
      parseFloat(acc_orders_json['result']['open'][name]['vol_exec']), 
      parseFloat(acc_orders_json['result']['open'][name]['opentm'])
    ])
  }
  return acc_orders
}

বন্ধ অর্ডার:

bash

Bash

// Formula to use in Excel cell: '=KAPI_ClosedOrders("TEST","0")'
// Or =KAPI_PRIVATE("TEST","ClosedOrders","0")

function KAPI_ClosedOrders(acc_id, offset) {
  acc_orders_json = JSON.parse(
    KAPI_Private(acc_id, 'ClosedOrders', 'ofs=' + offset)
  )
  acc_orders = new Array()
  for (name in acc_orders_json['result']['closed']) {
    acc_orders.push([
      name, 
      acc_orders_json['result']['closed'][name]['descr']['pair'], 
      acc_orders_json['result']['closed'][name]['descr']['type'], 
      acc_orders_json['result']['closed'][name]['descr']['ordertype'], 
      acc_orders_json['result']['closed'][name]['descr']['price'], 
      acc_orders_json['result']['closed'][name]['descr']['order'], 
      acc_orders_json['result']['closed'][name]['price'], 
      acc_orders_json['result']['closed'][name]['vol'], 
      acc_orders_json['result']['closed'][name]['vol_exec'], 
      acc_orders_json['result']['closed'][name]['cost'], 
      acc_orders_json['result']['closed'][name]['fee'], 
      acc_orders_json['result']['closed'][name]['status']
    ])
  }
  return acc_orders
}

ট্রেড হিস্টরি:

bash

Bash

// Formula to be used in Excel cell '=KAPI_TradesHistory("TEST","0")'

function KAPI_TradesHistory(acc_id, offset) {
  acc_trades_json = JSON.parse(KAPI_Private(acc_id, 'TradesHistory', 'ofs=' + offset))
  acc_trades = new Array
for (name in acc_trades_json['result']['trades']) {
  acc_trades.push([
    name,
    acc_trades_json['result']['trades'][name]['ordertxid'],
    acc_trades_json['result']['trades'][name]['postxid'],
    acc_trades_json['result']['trades'][name]['pair'],
    acc_trades_json['result']['trades'][name]['time'],
    acc_trades_json['result']['trades'][name]['type'],
    acc_trades_json['result']['trades'][name]['ordertype'],
    acc_trades_json['result']['trades'][name]['price'],
    acc_trades_json['result']['trades'][name]['cost'],
    acc_trades_json['result']['trades'][name]['fee'],
    acc_trades_json['result']['trades'][name]['vol'],
    acc_trades_json['result']['trades'][name]['margin'],
    acc_trades_json['result']['trades'][name]['leverage'],
    acc_trades_json['result']['trades'][name]['misc'],
    acc_trades_json['result']['trades'][name]['trade_id'],
    acc_trades_json['result']['trades'][name]['maker']
    
  ])
}
return acc_trades
}

খোলা পজিশন:

bash

Bash

//Formula to use in Excel Cell '=KAPI_Private("TEST", "OpenPositions", "docalcs=true")'

function KAPI_OpenPositions(acc_id) {
  acc_positions_json = JSON.parse(
    KAPI_Private(acc_id, 'OpenPositions', 'docalcs=true')
  )
  acc_positions = new Array()
  for (name in acc_positions_json['result']) {
    acc_positions.push([
      name, 
      acc_positions_json['result'][name]['ordertxid'], 
      acc_positions_json['result'][name]['posstatus'], 
      acc_positions_json['result'][name]['pair'], 
      acc_positions_json['result'][name]['type'], 
      acc_positions_json['result'][name]['ordertype'], 
      acc_positions_json['result'][name]['cost'], 
      acc_positions_json['result'][name]['fee'], 
      acc_positions_json['result'][name]['vol'], 
      acc_positions_json['result'][name]['vol_closed'], 
      acc_positions_json['result'][name]['margin'], 
      acc_positions_json['result'][name]['value'], 
      acc_positions_json['result'][name]['net'], 
      acc_positions_json['result'][name]['time']
    ])
  }
  return acc_positions
}


লেজার:

bash

Bash

//Formula to use in Excel Cell '=KAPI_Ledgers("TEST", "0")'


function KAPI_Ledgers(acc_id, offset) {
  acc_ledgers_json = JSON.parse(KAPI_Private(acc_id, 'Ledgers', 'ofs=' + offset))
  acc_ledgers = new Array
  for ( name in acc_ledgers_json['result']['ledger'] ) {
     acc_ledgers.push([name, acc_ledgers_json['result']['ledger'][name]['refid'], acc_ledgers_json['result']['ledger'][name]['time'], acc_ledgers_json['result']['ledger'][name]['type'], acc_ledgers_json['result']['ledger'][name]['subtype'], acc_ledgers_json['result']['ledger'][name]['asset'], acc_ledgers_json['result']['ledger'][name]['amount'], acc_ledgers_json['result']['ledger'][name]['fee'], acc_ledgers_json['result']['ledger'][name]['balance']])
  }
  return acc_ledgers
}

অর্ডার তথ্য জিজ্ঞাসা:

bash

Bash

// Formula to use in Excel cell '=KAPI_QueryOrders("TEST","Order ID")'

function KAPI_QueryOrders(acc_id, order_id) {
  acc_orders_json = JSON.parse(
    KAPI_Private(acc_id, 'QueryOrders', 'txid=' + order_id)
  )
  acc_orders = new Array()
  for (name in acc_orders_json['result']) {
    acc_orders.push([
      name, 
      acc_orders_json['result'][name]['descr']['pair'], 
      acc_orders_json['result'][name]['descr']['type'], 
      acc_orders_json['result'][name]['descr']['ordertype'], 
      acc_orders_json['result'][name]['descr']['price'], 
      acc_orders_json['result'][name]['descr']['order'], 
      acc_orders_json['result'][name]['price'], 
      acc_orders_json['result'][name]['vol'], 
      acc_orders_json['result'][name]['vol_exec'], 
      acc_orders_json['result'][name]['cost'], 
      acc_orders_json['result'][name]['fee'], 
      acc_orders_json['result'][name]['status']
    ])
  }
  return acc_orders
}

একটি সম্পূর্ণ গুগল স্ক্রিপ্ট ফাংশনের উদাহরণ যা ট্রেডহিস্টরি এন্ডপয়েন্টকে কল করে:

bash

Bash

const API_Public_Key = { 'TEST':'API PUBLIC KEY'}
const API_Private_Key = { 'TEST':'API PRIVATe KEY' }


function KAPI_Private(acc_id, endpoint, parameters) {
  Utilities.sleep(Math.random() * 100)
  
  api_key = API_Public_Key[acc_id]
  api_secret = Utilities.base64Decode(API_Private_Key[acc_id])
  api_path = Utilities.newBlob('/0/private/' + endpoint).getBytes()
  api_nonce = Date.now().toString()
  api_post = 'nonce=' + api_nonce + '&' + parameters
  
  api_sha256 = Utilities.computeDigest(Utilities.DigestAlgorithm.SHA_256, api_nonce + api_post)
  api_hmac = Utilities.computeHmacSignature(Utilities.MacAlgorithm.HMAC_SHA_512, api_path.concat(api_sha256), api_secret)
  api_signature = Utilities.base64Encode(api_hmac)
  
  http_options = {'method':'post', 'payload':api_post, 'headers':{'API-Key':api_key, 'API-Sign':api_signature}}
  http_response = UrlFetchApp.fetch('https://api.kraken.com/0/private/' + endpoint, http_options)
  api_data = http_response.getContentText()
  return api_data
}



function KAPI_TradesHistory(acc_id, offset) {
  acc_trades_json = JSON.parse(KAPI_Private(acc_id, 'TradesHistory', 'ofs=' + offset))
  acc_trades = new Array
for (name in acc_trades_json['result']['trades']) {
  acc_trades.push([
    name,
    acc_trades_json['result']['trades'][name]['ordertxid'],
    acc_trades_json['result']['trades'][name]['postxid'],
    acc_trades_json['result']['trades'][name]['pair'],
    acc_trades_json['result']['trades'][name]['time'],
    acc_trades_json['result']['trades'][name]['type'],
    acc_trades_json['result']['trades'][name]['ordertype'],
    acc_trades_json['result']['trades'][name]['price'],
    acc_trades_json['result']['trades'][name]['cost'],
    acc_trades_json['result']['trades'][name]['fee'],
    acc_trades_json['result']['trades'][name]['vol'],
    acc_trades_json['result']['trades'][name]['margin'],
    acc_trades_json['result']['trades'][name]['leverage'],
    acc_trades_json['result']['trades'][name]['misc'],
    acc_trades_json['result']['trades'][name]['trade_id'],
    acc_trades_json['result']['trades'][name]['maker']
    
  ])
}
return acc_trades
}

এই নিবন্ধে দেখানো দশমিক এবং হাজার বিভাজকগুলি আমাদের ট্রেডিং প্ল্যাটফর্মে প্রদর্শিত বিন্যাস থেকে ভিন্ন হতে পারে। আমরা কীভাবে পয়েন্ট এবং কমা ব্যবহার করি সে সম্পর্কে আরও তথ্যের জন্য আমাদের নিবন্ধটি পর্যালোচনা করুন।

test

আরও সাহায্যের প্রয়োজন?