Estoy usando la API de binance para obtener los precios de usdt. La API funciona en cartero pero no funciona en el script de 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.log('Oops Error, ', error); return } const prices = JSON.parse(response)['data']; console.log(prices) }
Me sale el siguiente error al ejecutar esto,
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' }
Traté de esperar algún tiempo también.
A partir de su mensaje de error, confirmé el código de estado 403
. Ref. En este caso, se considera que no se puede acceder directamente al sitio desde el lado de Google. Creo que la razón de su problema se debe a esto.
En este caso, como solución alternativa, me gustaría proponer el acceso a la URL sin ejecutar directamente el script con el editor de scripts. Cuando probé esta solución alternativa, confirmé que se podía devolver el valor.
En esta solución alternativa, se utiliza el siguiente flujo.
=fetchCryptoPricesFromApi()
en una celda.La secuencia de comandos de muestra de esta solución es la siguiente.
En esta solución, uso la hoja de cálculo de Google. Entonces, cree una nueva hoja de cálculo de Google y abra el editor de secuencias de comandos de la hoja de cálculo de Google. Y, copie y pegue el siguiente script. Y ejecute la función main()
con el editor de secuencias de comandos.
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.log(prices) }