google-apps-script - 如何在删除包含特定文本的行后,删除任何相邻的行,除非其空白
问题描述
我正在编写一个清理电子表格的脚本,这些表格是自动生成的,它们包含很多不相关的信息。我需要扫描一个标题,删除该行,然后删除每一行,直到到达完全空白的行,就在下一个标题组之前:
我可以使用下面的代码来扫描目标文本并删除该行。我可以记录我删除的每一行: Logger.log("deleted rows: " + toDelete ); 但是我在写其余部分时遇到了麻烦
function deleteRows() {
var sheet = SpreadsheetApp.getActiveSheet();
var rows = sheet.getDataRange();
var numRows = rows.getNumRows();
var values = rows.getValues();
var toDelete = [];
var deleteExtra = [];
var re = new RegExp('(Member Service Associate|Contract Work)','gi');
for (var row = 0; row < values.length; row++) {
for(var column = 0;column<values[row].length;column++){
if (re.exec(values[row][column])){
toDelete.push(row); } } }
for(var deleteRow = toDelete.length-1; deleteRow >= 0;deleteRow--){
sheet.deleteRow(toDelete[deleteRow]+1);
}
Logger.log("deleted rows: " + toDelete );
SpreadsheetApp.flush();
};
记录器输出:
[19-01-02 10:16:13:732 PST] deleted rows: 33,45,51,54,86,89,101,103,125,127,145,148,171,175,200,208,219,222,262,269,275,280,310,313,324,332,347,352,363,366,372,374,385,388
解决方案
删除不需要的和相邻的行
在没有能够查看电子表格的好处的情况下,您说要继续删除行,直到遇到空白行。
function deleteUnwantedAndAdjacentRows() {
var sh=SpreadsheetApp.getActiveSheet();
var rg=sh.getDataRange();
var vA=rg.getValues();
var d=0;//deleted count
var kd=false;//keep deleting
var re = new RegExp('(Member Service Associate|Contract Work)','gi');
for (var i=0;i<vA.length;i++) {
if(vA[i].join("") && kd){//if something in this row and keep deleting is still true
sh.deleteRow(i-d+1);//then delete
d++;//increment delete count
countinue;//go on to nextrow
}else{//if row is blank
kd=false;//quit deleting
}
for(var j=0;j<vA[i].length;j++){
if(re.exec(vA[i][j])){
sh.deleteRow(i-d+1);
d++;
kd=true;
}
}
}
}
一定要在你能负担得起的事情上进行测试。
推荐阅读
- microsoft-graph-api - 无法在 Microsoft Teams 中将 Planner 创建为选项卡
- sql - SQL获取分组的最大日期
- python - 晨星数据导入不会给出要求的所有日期价格
- css - 如何修复 Safari mix-blend-mode: color-dodge bug?
- flyway - Flyway 中的迁移文件大小有限制吗?
- java - 无法在下拉列表中执行操作,因为通过 sendKeys 发送到期日期后会弹出日历
- optimization - Julia 代码优化,结构和原始类型之间的区别?(内存分配)
- javascript - 使用传单平移最大纬度地图
- r - data.table 返回列值的错误子集
- php - 如何根据特定条件从 2 个表中获取数据