Coinmarketcap在提价时给出#N / A和Loading ..错误

直到大约一周前,我的Google表格代码一直没有拉高代币价格。然后随机停止,并一直显示错误; #N / A或正在加载。.

将鼠标悬停在错误单元格上时,它会显示“错误,导入的内容为空”。

我的研究使我了解到,现在有新的coinmarketcap pro API代替了旧的。好奇这是否是引起问题的原因吗?

但是我不确定是否就是这样。请帮忙。

拉价公式为(示例)=importxml("https://coinmarketcap.com/currencies/bitcoin/","//*[@id=" & CHAR(34) & "quote_price" & CHAR(34) &"]/span[1]")

然后我在下面显示了一个相关的脚本。

  function onOpen() {
  Spreadsheetapp.getactiveSpreadsheet().getRangeByName("TodayRng").setvalue(new Date())
}

function getPriceStatic(coinName,currency) 
{
  try {

    var request_url = "https://api.coinmarketcap.com/v1/ticker/" + coinName + "?convert=" + currency
    /*var request_url = "https://pro-api.coinmarketcap.com/v1/ticker/" + coinName + "?convert=" + currency*/

    var response = UrlFetchApp.fetch(request_url);

    var json = response.getcontentText();

    var data = JSON.parse(json);

    var priceval = {"EUR" : data[0].price_eur,"USD" : data[0].price_usd,"BTC" : data[0].price_btc,"AUD" : data[0].price_aud,"BRL" : data[0].price_brl,"CAD" : data[0].price_cad,"CHF" : data[0].price_chf,"CNY" : data[0].price_cny,"RUB" : data[0].price_rub,"GBP" : data[0].price_gbp,"HKD" : data[0].price_hkd,"IDR" : data[0].price_idr,"INR" : data[0].price_inr,"JPY" : data[0].price_jpy,"KRW" : data[0].price_krw,"MXN" : data[0].price_mxn,"24h_volume_usd" : data[0]["24h_volume_usd"],"market_cap_usd" : data[0].market_cap_usd,"available_supply" : data[0].available_supply,"total_supply" : data[0].total_supply,"max_supply" : data[0].max_supply,/*added by me*/
                    "percent_change_1h" : data[0].percent_change_1h,"percent_change_24h" : data[0].percent_change_24h,"percent_change_7d" : data[0].percent_change_7d,"last_updated" : data[0].last_updated }

    var price = parseFloat(priceval[currency])

    return price
  }
  catch(err) {
      getPriceStatic(coinName,currency)
  }
}

function getPriceUpdatable(coinName,currency,timestamp) 
{
  try {
    var request_url = "https://api.coinmarketcap.com/v1/ticker/" + coinName + "?convert=" + currency
    /*var request_url = "https://pro-api.coinmarketcap.com/v1/ticker/" + coinName + "?convert=" + currency*/

    var response = UrlFetchApp.fetch(request_url);

    var json = response.getcontentText();

    var data = JSON.parse(json);

    var priceval = {"EUR" : data[0].price_eur,timestamp)
  }
}

function test_onEdit() {
  onEdit({
    range : Spreadsheetapp.getactiveSpreadsheet().getactiveCell(),});
}

function onEdit(e)
{
  e.range = Spreadsheetapp.getactiveSpreadsheet().getactiveCell();

  if (e.range.getSheet().getName() != "Transactions") return;

  var ss = Spreadsheetapp.getactiveSpreadsheet();
  var ws = ss.getSheetByName("Transactions") 

  var currency = ss.getRangeByName("Currency").getvalue();

  var row = e.range.getRow();

  var feeCurrColumn = ss.getRangeByName("FeeCurrencyColumn").getcolumn();
  var acqCurrColumn = ss.getRangeByName("AcquiredCurrencyColumn").getcolumn();

  var bookPriceEurCol = ss.getRangeByName("BookPriceEURCol").getcolumn();
  var bookPriceBtcCol = ss.getRangeByName("BookPriceBTCCol").getcolumn();
  var feeBookPriceEurCol = ss.getRangeByName("FeeBookPriceEURCol").getcolumn();
  var feeBookPriceBtcCol = ss.getRangeByName("FeeBookPriceBTCCol").getcolumn();

  var acqCurrNameCol = ss.getRangeByName("AcquiredCurrencyNameColumn").getcolumn();
  var feeCurrNameCol = ss.getRangeByName("FeeCurrencyNameColumn").getcolumn();

  var acqIsCryptoCol = ss.getRangeByName("AcquiredIsCryptoCol").getcolumn();
  var feeIsCryptoCol = ss.getRangeByName("FeeIsCryptoCol").getcolumn();

  var acqAmountCol = ss.getRangeByName("AcquiredAmountCol").getcolumn();
  var feeAmountCol = ss.getRangeByName("FeeAmountCol").getcolumn();

  var transDateColumn = ss.getRangeByName("TransactionDateColumn").getcolumn();

  var a = e.range.getcolumn();        

  if (e.range.getcolumn() == feeAmountCol || e.range.getcolumn() == acqAmountCol || e.range.getcolumn() == feeCurrColumn || e.range.getcolumn() == acqCurrColumn)
  {

    if (e.range.getcolumn() == acqAmountCol || e.range.getcolumn() == acqCurrColumn) {
      if (e.range.getvalue().length == 0) {
        ws.getRange(row,bookPriceEurCol).setvalue("");
        ws.getRange(row,bookPriceBtcCol).setvalue("");
        ws.getRange(row,transDateColumn).setvalue("");
      } else {
        updateBookPrice(ws,row,bookPriceEurCol,bookPriceBtcCol,acqIsCryptoCol,acqCurrNameCol) 
        updateFeeBookPrice(ws,feeBookPriceEurCol,feeBookPriceBtcCol,feeIsCryptoCol,feeCurrNameCol,feeAmountCol,acqAmountCol)
        ws.getRange(row,transDateColumn).setvalue(new Date());
      }
    }

    if (e.range.getcolumn() == feeAmountCol || e.range.getcolumn() == feeCurrColumn ) {
      if (e.range.getvalue().length == 0) {
        ws.getRange(row,feeBookPriceEurCol).setvalue("");
        ws.getRange(row,feeBookPriceBtcCol).setvalue("");
      } else {
        updateFeeBookPrice(ws,transDateColumn).setvalue(new Date());
      }
    }    
  }
  Logger.log("exit")
}

function updateBookPrice(ss,acqCurrNameCol) 
{
  if (ss.getRange(row,acqIsCryptoCol).getvalue() == true) {
    var coinName = ss.getRange(row,acqCurrNameCol).getvalue();
    var val = getPriceStatic(coinName,currency);
    ss.getRange(row,bookPriceEurCol).setvalue(val);

    val = getPriceStatic(coinName,"BTC");
    ss.getRange(row,bookPriceBtcCol).setvalue(val);

  } else {
    ss.getRange(row,bookPriceEurCol).setvalue(0);
    ss.getRange(row,bookPriceBtcCol).setvalue(0);
  }  
}

function updateFeeBookPrice(ss,acqAmountCol)
{
  var acqAmount = ss.getRange(row,acqAmountCol).getvalue();
  var feeAmount = ss.getRange(row,feeAmountCol).getvalue();

  var finalEurVal = 0;

  if (ss.getRange(row,feeIsCryptoCol).getvalue() == true) {
    var coinName = ss.getRange(row,feeCurrNameCol).getvalue();

    finalEurVal = feeAmount * getPriceStatic(coinName,currency) / acqAmount;
    ss.getRange(row,feeBookPriceEurCol).setvalue(finalEurVal);

  } else {
    finalEurVal = feeAmount/acqAmount;
    ss.getRange(row,feeBookPriceEurCol).setvalue(finalEurVal);
  }  

  ss.getRange(row,feeBookPriceBtcCol).setvalue(finalEurVal/getPriceStatic("bitcoin",currency));
}
xuyongm 回答:Coinmarketcap在提价时给出#N / A和Loading ..错误

Price 对我来说,这很有效,但是昨天停止了工作,现在又可以工作了

=importxml("https://coinmarketcap.com/currencies/ethereum/","//span[@class='cmc-details-panel-price__price']")
本文链接:https://www.f2er.com/3124134.html

大家都在问