如何在Google Apps Script代码中指定目标列或使用全部列?
解决方案
1. 指定特定列检查
添加一个列索引数组,按需指定要检查的列(列索引从0开始,A列对应0,B列对应1,以此类推),遍历每行时仅检查这些指定列的内容。
修改后的代码:
function onEdit() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var s = ss.getSheetByName('LEADS FRESCOS'); // 替换成你的工作表名称 var values = s.getDataRange().getValues(); // 自定义要检查的列索引,比如要查A、C列就填[0,2],可按需修改 var targetColumns = [0, 2]; var keyword = "trabalho"; // 从下往上遍历,避免删行后索引错乱 for (var i = values.length; i > 0; i--) { var rowValues = values[i-1]; var shouldDelete = false; // 逐一检查指定列 for (var col of targetColumns) { if (rowValues[col] && rowValues[col].toLowerCase().indexOf(keyword) > -1) { shouldDelete = true; break; // 只要有一列匹配,就标记删除 } } if (shouldDelete) { s.deleteRow(i); } } }
使用说明:
- 修改
targetColumns数组里的数值即可切换检查目标列,多列用逗号分隔。 - 加了空值判断
rowValues[col],避免单元格为空时调用toLowerCase()报错。
2. 检查全部列
如果需要扫描每行所有单元格,直接遍历整行内容即可,无需指定列数组。
代码如下:
function onEdit() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var s = ss.getSheetByName('LEADS FRESCOS'); // 替换成你的工作表名称 var values = s.getDataRange().getValues(); var keyword = "trabalho"; // 从下往上遍历,避免删行后索引错乱 for (var i = values.length; i > 0; i--) { var rowValues = values[i-1]; var shouldDelete = false; // 遍历当前行所有单元格 for (var cellValue of rowValues) { if (cellValue && cellValue.toLowerCase().indexOf(keyword) > -1) { shouldDelete = true; break; // 只要有一个单元格匹配,就标记删除 } } if (shouldDelete) { s.deleteRow(i); } } }
注意事项:
- 必须保持从下往上遍历的逻辑,从上往下删行会导致后续行索引前移,部分行被遗漏。
- 空值判断能避免单元格内容为
null或undefined时出现运行错误。
内容的提问来源于stack exchange,提问作者willian ribeiro
相关产品推荐
相关产品推荐

