如果 "Column A" 单元格包含给定文本,如何删除 Google Sheet 中的行
How to delete row in Google Sheet if "Column A" cell CONTAINS given text
我正在尝试实现一个 Google 脚本,这样如果 A 列中的任何单元格包含任何指定的文本,它就会删除整行。这是我正在使用的...
function onEdit() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = ss.getSheetByName('Sheet1'); // change to your own
var values = s.getDataRange().getValues();
for (var row in values)
if (values[row][0] == 'glass')
s.deleteRow(parseInt(row)+1);
else if (values[row][0] == 'Glass')
s.deleteRow(parseInt(row)+1);
};
我将包括多个不同的标准来为我清理我的电子表格。某些行可能包括 "auto glass"、"autoglass"、"Glass repair"、"Glass Doctor"、"Glass Smith" 等...
目前,此代码删除 A 列单元格为 "Glass" 或 "glass" 的行。
请帮忙!!
您必须从末尾删除行。如果您从头开始删除一行,则该行下方的所有行现在都将与数组中值的顺序不同步。删除第一行后,其他所有被删除的行都可能是错误的行,除非您调整了行号的代码。尝试使用此代码:
function cleanRows() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sh = ss.getSheetByName('Sheet1');
var colA_Vals = sh.getRange(1, 1, sh.getLastRow(), 1).getValues();
var i = 0,
j = 0,
thisVal,
chkVal,
arrayValsToChk = ['glass'];
for (i=colA_Vals.length;i>0;i-=1) {
thisVal = colA_Vals[i-1][0];
//Logger.log('i: ' + i);
for (j=0;j<arrayValsToChk.length;j+=1) {
chkVal = arrayValsToChk[j].toLowerCase() //Change to all lower case;
if (thisVal.indexOf(chkVal) !== -1) {
ss.deleteRow(i);
};
};
};
};
记下要检查的所有值的数组。向数组添加新值以检查其他值。
桑迪在如何删除行方面当然是正确的。这可能是最重要的一点。我还建议将字符串更改为小写,这样您只需进行一次测试即可。试试这个:
function onEdit() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = ss.getSheetByName('Sheet1'); // change to your own
var values = s.getDataRange().getValues();
for(var i=values.length;i>0;i-=1){
var lcVal=values[i-1][0].toLowerCase() //Change to all lower case
var index = lcVal.indexOf("glass"); //now you only have to check for contains "glass"
if (lcVal.indexOf("glass") > -1){
s.deleteRow(i)};
}}
我正在尝试实现一个 Google 脚本,这样如果 A 列中的任何单元格包含任何指定的文本,它就会删除整行。这是我正在使用的...
function onEdit() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = ss.getSheetByName('Sheet1'); // change to your own
var values = s.getDataRange().getValues();
for (var row in values)
if (values[row][0] == 'glass')
s.deleteRow(parseInt(row)+1);
else if (values[row][0] == 'Glass')
s.deleteRow(parseInt(row)+1);
};
我将包括多个不同的标准来为我清理我的电子表格。某些行可能包括 "auto glass"、"autoglass"、"Glass repair"、"Glass Doctor"、"Glass Smith" 等...
目前,此代码删除 A 列单元格为 "Glass" 或 "glass" 的行。
请帮忙!!
您必须从末尾删除行。如果您从头开始删除一行,则该行下方的所有行现在都将与数组中值的顺序不同步。删除第一行后,其他所有被删除的行都可能是错误的行,除非您调整了行号的代码。尝试使用此代码:
function cleanRows() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sh = ss.getSheetByName('Sheet1');
var colA_Vals = sh.getRange(1, 1, sh.getLastRow(), 1).getValues();
var i = 0,
j = 0,
thisVal,
chkVal,
arrayValsToChk = ['glass'];
for (i=colA_Vals.length;i>0;i-=1) {
thisVal = colA_Vals[i-1][0];
//Logger.log('i: ' + i);
for (j=0;j<arrayValsToChk.length;j+=1) {
chkVal = arrayValsToChk[j].toLowerCase() //Change to all lower case;
if (thisVal.indexOf(chkVal) !== -1) {
ss.deleteRow(i);
};
};
};
};
记下要检查的所有值的数组。向数组添加新值以检查其他值。
桑迪在如何删除行方面当然是正确的。这可能是最重要的一点。我还建议将字符串更改为小写,这样您只需进行一次测试即可。试试这个:
function onEdit() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = ss.getSheetByName('Sheet1'); // change to your own
var values = s.getDataRange().getValues();
for(var i=values.length;i>0;i-=1){
var lcVal=values[i-1][0].toLowerCase() //Change to all lower case
var index = lcVal.indexOf("glass"); //now you only have to check for contains "glass"
if (lcVal.indexOf("glass") > -1){
s.deleteRow(i)};
}}