设置零(0)

时间:2015-11-24 09:21:28

标签: javascript google-apps-script google-sheets

我们正在尝试添加&#34; 0&#34;清空Google Spreadsheets中的单元格。 到目前为止我们提出的是以下代码,但是它将表单中的<0> 所有单元格设置为0。我们希望它只设置在 B:Q 的单元格上。

enter image description here

我们尝试更改以下内容,但结果相同:

function zeroDatarange() {
  var range = SpreadsheetApp.getActiveSheet().getDataRange();
  zero(range, null);
}


function zero(source, type) {
  var data, range;
  if(type === 'sheet') {
    var lastRow = source.getMaxRows();
    var lastColumn = source.getMaxColumns();    
    range = source.getRange(1, 1, lastRow, lastColumn);
  } else {
    range = source;
  }
  data = range.getValues();
  for(var i = 0, iLen = data.length; i < iLen; i++) {
    for(var j = 0, jLen = data[0].length; j < jLen; j++) {
      if(!data[i][j]) {
        data[i][j] = 0;
      }
    }
  }  
  range.setValues(data);
}

我们使用的完整代码snipet如下所示:

{{1}}

2 个答案:

答案 0 :(得分:1)

您正在使用包含A列的整个数据范围的参数调用zero() 然后你检查type == 'sheet'是否 您正在传递null,因此您粘贴的range设置为source(包括A列的完整数据范围)。

不确定您对zero()功能的其他用途,但您需要将range中的zero()设置为range = source.getRange(1, 1, lastRow, lastColumn);
您可以在else子句中执行此操作,也可以将传递的参数从null更改为'sheet',并将范围分配编辑为从第二列开始。

答案 1 :(得分:0)

这非常好用,编辑B2:Q200。感谢Robin Gertenbach的帮助。

 function zeroSheet() {
      var sheet = SpreadsheetApp.getActiveSheet();
      zero(sheet, 'sheet');
    }

    function zero(source, type) {
      var data, range;
      if(type === 'sheet') {
        var lastRow = source.getMaxRows();
        var lastColumn = source.getMaxColumns();   
       Logger.log(lastColumn);
        range = source.getRange(2, 2, 200, 16);
      } else {
        range = source;
      }
      data = range.getValues();
      for(var i = 0, iLen = data.length; i < iLen; i++) {
        for(var j = 0, jLen = data[0].length; j < jLen; j++) {
          if(!data[i][j]) {
            data[i][j] = 0;
          }
        }
      }  
      range.setValues(data);
    }