谷歌片不正确范围宽度没有CMC匹配时(Google sheets incorrect range w

2019-11-04 20:38发布

我使用这个函数从coinmarketcap使用他们的第2版API提取信息。 我得到的问题是,如果“website_slug”上不存在coinmarketcap,我得到一个incorrect range width的错误,而不是仅仅把功能xxx小区。 这可以通过具有在B列(小区不匹配于一个CMC website_slug重新创建https://api.coinmarketcap.com/v2/ticker/ )。

function getMarketCap(sheetname) {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName(sheetname);  
  var assets = [];  
  var idRange = sheet.getRange("B1:B");
  var lastRow = getLastRowOfRange(idRange);  
  var cellRange = sheet.getRange(1, 2, lastRow).getValues();
  var mcRange = sheet.getRange(1, 3, lastRow);  
  var mcValues = [];  
  for (var i = 0; i < cellRange.length; i++) {
    assets[i] = cellRange[i];
  }  


  var req = [];
  for (var i = 0; i < 16; i++) {
    req.push({
      muteHttpExceptions: true,
      method: "get",
      url: "https://api.coinmarketcap.com/v2/ticker/?start=" + (i * 100 + 1),
    });
  }
  var responses = UrlFetchApp.fetchAll(req);
  var res = responses.filter(function(e){return e.getResponseCode() == 200}).map(function(e){return JSON.parse(e.getContentText())});
  if (responses.length != res.length) Logger.log("%s errors occurred.", responses.length - res.length);
  var mcValues = [];
  assets.forEach(function(e, h) {
    mcValues[h] = []
    res.some(function(f) {
      Object.keys(f.data).some(function(g) {
        if (f.data[g].website_slug == e[0]) {
          mcValues[h][0] = f.data[g].quotes.USD.market_cap;
          return true;
        }
      });
      if (mcValues[h][0]) return true;
    });
    if (!mcValues[h][0]) mcValues[h][0] = 'xxx';

  });

  mcRange.setValues(mcValues); 
}
文章来源: Google sheets incorrect range width when no cmc matches