谷歌电子表格删除基于值0的行



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

我是谷歌脚本的新手,但我发现这一个在某种程度上可以工作

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

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

但是

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

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

我希望我说得足够清楚。

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

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

最新更新