Google电子表格脚本编辑器:如何使用默认值0替换空单元格

时间:2016-12-20 18:57:37

标签: javascript gwt google-sheets

我在尝试找出如何替换默认值为0的空单元格时遇到了一些麻烦。以下是我使用的代码,它适用于1个单元格,但不会填充其余单元格列。我知道我错过了一个for循环 - 我用for循环测试了一段时间,然而,两者都不适合我。有人可以帮助我吗?

function onEdit(event) {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var rng = sheet.getRange(3,4,sheet.getLastRow());
  var data = rng.getValues();

  if(data === "") {
      rng.setValue(0);
  }
}

3 个答案:

答案 0 :(得分:2)

function emptycellfilling() {
  var ss= SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1');

  for(var i=2; i<ss.getLastRow(); i++){
    var val= ss.getRange(i,2).getValue();//select col num

    if(val==''){ss.getRange(i,2).setValue(0);}//select target col num and value you want to fill inside, here is 0
  }
  
}

如果您正在寻找其他东西,请发表评论

答案 1 :(得分:0)

尝试以下脚本..

function fillWithZero() {
var ss = SpreadsheetApp.getActive()
    .getSheetByName('Sheet1');
var range = ss.getRange("A:B")
    .offset(0, 0, ss.getDataRange()
        .getNumRows());
range.setValues(range.getValues()
    .map(function (row) {
        return row.map(function (cell) {
            return !cell ? 0 : cell;
        });
    }));
}

更改工作表名称和范围以适应并查看它是否适合您?

答案 2 :(得分:0)

我修改了你的代码:

function siftBlanks() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var colToZero = 2;

  var data = sheet.getRange(1,colToZero,sheet.getMaxRows()).getValues();

  var blank = data.map(testBlank); // this returns an array of true or false
  for (var i=0;i<data.length;i++){
    if(blank[i]){
      data[i] = ["0"];
    }
  }
  sheet.getRange(1,colToZero,sheet.getMaxRows()).setValues(data);
}

function testBlank(arg){
  return arg=="";
}

它在整个列中加载,由colToZero确定,返回一个真值或假值的数组,取决于相应的单元格是否为空,然后通过元素执行for循环任何空白的东西都归零。然后,它将所选列的值设置为新的修订列。

肯定有更好的方法来做到这一点,而不是通过遍历数组,但这是我第一次尝试它。我希望它有所帮助,或至少激励别人改进它。