我看过这个讨论,但不想劫持它。链接
我是谷歌脚本的新手,但我发现这一个在某种程度上可以工作
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得到表行(我们删除的那一行)。