我正在尝试创建一个脚本,允许我删除包含特定文本值的Google电子表格中的行。我是一个非常新手编码器,并尝试修改我发现的几个类似的脚本。我唯一可以上班的是以下内容。但是,我的值列表将很长,可能有数百个术语,而我在这里使用的脚本将很难构建这么多值。我猜测在数组或第二个电子表格中使用值会好得多。它也区分大小写。我尝试从其他脚本中提升代码以更改为全部小写但我无法正常工作。
如果您愿意分享您的集体知识,我该如何修改以实现我的目标?
function readRows() {
var sheet = SpreadsheetApp.getActiveSheet();
var rows = sheet.getDataRange();
var numRows = rows.getNumRows();
var values = rows.getValues();
var rowsDeleted = 0;
for (var i = 0; i <= numRows - 1; i++) {
var row = values[i];
if (row[1].indexOf("test") > -1) {
sheet.deleteRow((parseInt(i)+1) - rowsDeleted);
rowsDeleted++;
}
if (row[1].indexOf("TEST") > -1) {
sheet.deleteRow((parseInt(i)+1) - rowsDeleted);
rowsDeleted++;
}
}
};
答案 0 :(得分:1)
试试这个。如果你删除行,最好从底部开始,否则它会与你的索引混淆。 DelA是您希望基于行删除的字符串数组。 indexOf函数返回一些&gt; -1如果找到其中一个字符串。一旦找到它,它会在删除它后停在该行上并向上移动一行。行号是i + 1.我没想到你有一个标题行。如果您有标题行,请将停止条件调整为i&gt; 0
function deleteMyRows()
{
var delA=['Test','Others'];
var sht = SpreadsheetApp.getActiveSheet();
var rng = sht.getDataRange();
var values = rng.getValues();
for (var i = values.length-1; i > -1; i--)
{
for(var j=0;j<values[i].length;j++)
{
for(var k=0;k<delA.length;k++)
{
if(values[i][j].indexOf(delA[k])>-1)
{
sht.deleteRow(i + 1);
break;
}
}
}
}
}
所以也许这就是你真正需要的东西:
function deleteMyRows()
{
var delA=['Test','Others'];
var sht = SpreadsheetApp.getActiveSheet();
var rng = sht.getDataRange();
var values = rng.getValues();
for (var i = values.length-1; i > -1; i--)
{
for(var j=0;j<values[i].length;j++)
{
for(var k=0;k<delA.length;k++)
{
var lcval=String(values[i][j]).toLowerCase();
var lcdel=String(delA[k]).toLowerCase();
if(lcval.indexOf(lcdel)>-1)
{
sht.deleteRow(i + 1);
break;
}
}
}
}
}