es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Script de Google Sheet: La función debería devolver datos JSON pero devuelve NULL

Estoy tratando de obtener un valor de un objeto JSON desde una URL para usarlo en una hoja de cálculo de Google.

Este es el script:

function getPricefromExchange() {

var url = 'https://api.coinstats.app/public/v1/tickers?exchange=binance&pair=DOT-USDT';
  var reponse = UrlFetchApp.fetch(url);
  var json = reponse.getContentText();
  var data = JSON.parse(json);

return data.tickers.price;

}

Los datos JSON son los siguientes:

{
"tickers":
[
{ "from":"DOT",
  "to":"USDT",
  "exchange":"Binance",
  "price":27.82}
]
}

El resultado de mi función es NULL y sin importar cómo cambie el valor de retorno (por ejemplo, return data.price; o return data;), el valor de retorno se mantiene en NULL.

¿Qué hice mal? Solo quiero tener el precio como valor de retorno.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Basándose en los datos JSON proporcionados, parece que la propiedad “tickers” del objeto JSON es en realidad un arreglo que contiene un objeto, y la propiedad “price” está anidada dentro de ese objeto. Por lo tanto, para obtener el precio, deberás acceder a él utilizando la notación de arreglo y luego la notación de objeto. Aquí tienes un script actualizado que debería funcionar:

    function getPricefromExchange() {
    
      var url = 'https://api.coinstats.app/public/v1/tickers?exchange=binance&pair=DOT-USDT';
      var response = UrlFetchApp.fetch(url);
      var json = response.getContentText();
      var data = JSON.parse(json);
    
      return data.tickers[0].price;
    
    }
    

    En esta versión, estamos utilizando data.tickers[0] para acceder al primer (y único) objeto en el arreglo tickers, y luego .price para obtener el valor de la propiedad price. Esto debería devolver correctamente el precio como el valor de la llamada a la función.

Comments are closed.