Я использую Binance API для получения цен на USDT. API работает на почтальоне, но не работает на скрипте Google.
function fetchCryptoPricesFromApi() {
const data = {
"page": 1,
"rows": 10,
"payTypes": [],
"asset": "USDT",
"tradeType": "SELL",
"fiat": "LKR",
"publisherType": null,
"transAmount": "2600"
}
const payload = JSON.stringify(data)
const options = {
"method" : "POST",
"contentType" : "application/json",
"payload" : payload
}
let response;
try {
response = UrlFetchApp.fetch('https://p2p.binance.com/bapi/c2c/v2/friendly/c2c/adv/search', options);
} catch (error) {
console.info('Oops Error, ', error);
return
}
const prices = JSON.parse(response)['data'];
console.info(prices)
}
Я получаю следующую ошибку при выполнении этого,
Oops Error, { [Exception: Request failed for https://p2p.binance.com returned code 403. Truncated server response: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<HTML><HEAD><META HTTP-EQUIV = "Content-Type" ... (use muteHttpExceptions option to examine full response)] name: 'Exception' }
Я тоже пытался подождать какое-то время.
Из вашего сообщения об ошибке я подтвердил код состояния 403
. Ссылка В этом случае считается, что прямой доступ к сайту со стороны Google невозможен. Я думаю, что причина вашей проблемы связана с этим.
В этом случае в качестве обходного пути я хотел бы предложить доступ к URL-адресу без непосредственного запуска сценария с помощью редактора сценариев. Когда я тестировал этот обходной путь, я подтвердил, что значение может быть возвращено.
В этом временном решении используется следующий поток.
=fetchCryptoPricesFromApi()
в ячейку.Пример сценария этого обходного пути выглядит следующим образом.
В этом обходном пути я использую Google Spreadsheet. Поэтому, пожалуйста, создайте новую таблицу Google и откройте редактор сценариев таблицы Google. И скопируйте и вставьте следующий скрипт. И запустите функцию main()
в редакторе скриптов.
function fetchCryptoPricesFromApi() {
const data = {
"page": 1,
"rows": 10,
"payTypes": [],
"asset": "USDT",
"tradeType": "SELL",
"fiat": "LKR",
"publisherType": null,
"transAmount": "2600"
}
const payload = JSON.stringify(data)
const options = {
"method": "POST",
"contentType": "application/json",
"payload": payload
}
const response = UrlFetchApp.fetch('https://p2p.binance.com/bapi/c2c/v2/friendly/c2c/adv/search', options);
return response.getContentText();
}
// Please run this function.
function main() {
const sheet = SpreadsheetApp.getActiveSheet();
const range = sheet.getRange("A1");
range.setFormula("=fetchCryptoPricesFromApi()");
SpreadsheetApp.flush();
const value = range.getValue();
range.clearContent();
const prices = JSON.parse(value)['data'];
console.info(prices)
}
@В ВИДЕ. SAMARASINGHE Спасибо за ответ и тестирование. Я рад, что ваша проблема была решена. И тебе спасибо.