首页 文章

写入Google工作表中的单元格时出现错误的范围错误

提问于
浏览
0

我正在使用gfx作为按钮,我希望它将数组中的值设置为一组行和列 . 到目前为止,这就是我所拥有的 .

function loadTrades(){
  var balancesSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Balances");
  var exchange = balancesSheet.getRange("D1").getValue();
  var trades = Gettrades(exchange);
  var arr = [];
  var c = [];
  for (var i=0;i < trades.length-1;i++) {
    c=[];
    for (var j=0; j< trades[0].length;j++){
      c.push(trades[i][j]);
    }
    arr.push(c);
  }
  //var arr = json2array(trades); this does the same as above but in a funtion of its own.
  var destinationRange = balancesSheet.getRange("D2");
  destinationRange.setValues(arr);
  };

function json2array(data){
  var results = [];
  var keys = [];
  var values = [];
  for (var i in data){
    for (var Key in data[i]){
      if (i == 0) keys.push(Key);
      values.push(data[i][Key]);
    }
    if (i == 0){
      results.push(keys);
      keys = [];
    }
    results.push(values);
    values = [];
  }
  return results;
};

阵列中最多有500行,7列 .
我收到了错误 .

范围高度不正确,为3但应为1 .

我想我对getRange和setValues在google工作表中的工作方式缺乏了解 .

I've read through this site以及其他一些关于stackoverflow的示例,但无法找到我的解决方案 .

1 回答

  • 1

    由于发生错误

    destinationRange.setValues(arr);
    

    问题的根源在前一行

    var destinationRange = balancesSheet.getRange("D2");
    

    以上是因为 balancesSheet.getRange("D2") 返回单个单元格但 arr ,根据错误,高度为3 .

    解决这个问题的一种方法是替换

    var destinationRange = balancesSheet.getRange("D2");
    

    通过

    var destinationRange = balancesSheet.getRange(2,4,arr.length,arr[0].length);
    

    参考

相关问题