Google电子表格根据值0删除行

时间:2013-11-20 18:28:28

标签: google-apps-script google-sheets

我看过这个讨论,但不想劫持它。 link

我是google脚本的新手,但我发现这个以某种方式工作

function deleteRows() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var s = ss.getSheetByName('ark1'); // 0AmWS-4fnAa_OdG9aV210NnZlZHlDYVRZSUxrOFdwX1E&usp
  var values = s.getDataRange().getValues();

  var deleted = 0;  // Counter (don't need if we loop backwards)
  for (var row = 0; row < values.length; row++) {
    if (values[row][2] == '' || values[row][2] == 0) {
      s.deleteRow(row + 1 - deleted);
      deleted++;
    }
  }
  SpreadsheetApp.flush();
};

它适用于我的测试电子表格。但仅限于C列。当我输入数字0时,该行将被删除。我希望它对不同的列做出反应。即N而不是。 我怎么做? 我打赌答案很明显,但我无法弄明白。 非常感谢任何帮助。

谢谢!

Jesper Homann

1 个答案:

答案 0 :(得分:0)

列以A = 1,B = 2,C = 3等开始...因此列N为14。

BUT

数组从0开始计数,因此在您的代码示例中,您必须使用

if (values[row][13] == '' || values[row][13] == 0) {

我希望我说清楚。

请注意,在上面的代码中,您使用了s.deleteRow(row + 1 - deleted);,而+1的出现原因完全相同:行数从1开始,数组从0开始计算。

IMO,变量名row绝对不是一个好选择,因为它是模糊的,它是一个表格行或一个数组行...一个人应该称之为n或i,任何中性。在这个例子中,它是一个数组行,因此从0开始,然后是+1,以获得工作表行(我们删除的那一行)。