如何删除提及包含"takehome"或类似短语的单元格?



我想删除所有提到"外卖""带回家""带回家";,等等https://docs.google.com/spreadsheets/d/1UgiKHokV3bpeuCF4lhgc9aQisE3c86OyVjZeats9u24/edit#gid=0

此代码没有任何作用:

function myFunction() {
var sheet = SpreadsheetApp.openById("1UgiKHokV3bpeuCF4lhgc9aQisE3c86OyVjZeats9u24");
var data = sheet.getDataRange().getValues();
for (var i = data.length - 1; i>=0; i--) {
if (data[i][0].includes('takehome')) {
sheet.deleteRow(i); 
}
}
}

我该怎么做,谢谢!

我做了这个更改,它成功了:

var ss = SpreadsheetApp.openById("1UgiKHokV3bpeuCF4lhgc9aQisE3c86OyVjZeats9u24");
var sheet = ss.getSheets()[0];
var data = sheet.getDataRange().getValues();

试试这个:

function myFunction() {
const ss = SpreadsheetApp.getActive();
const sh = ss.getActiveSheet();
const rem = ["take home", "takehome", "take-home"];//you can add other options in this array
rem.forEach(s => {
sh.createTextFinder(s).matchEntireCell(false).findAll().forEach(r => {
sh.deleteRow(r.getRow());
//Logger.log(r.getRow())
})
})
}

另一种可能性:

function myFunction() {
const ss = SpreadsheetApp.getActive();
const sh = ss.getActiveSheet();
sh.createTextFinder("take.*home").useRegularExpression(true).matchEntireCell(false).findAll().sort((a,b) => b.getRow() - a.getRow()).forEach(r => {
sh.deleteRow(r.getRow());
//Logger.log(r.getRow())
})
}

后一个将处理介于take和home之间的几乎所有内容,包括多个角色。它将删除所有这些:

take   home
take-home
takehome
take_home help
takehome
take and add a bunch of charactors home

尝试更改行:

if (data[i][0].includes('takehome')) {
sheet.deleteRow(i); 

带有:

if (data[i][0].match(/take([^a-z]*)home/i)) {
sheet.deleteRow(i+1); 

[^a-z]*表示除从"a"到"z"的字母符号外的任何(或无(符号。

i表示忽略大小写。


以防万一,完整代码在这里:

function myFunction() {
var sheet = SpreadsheetApp.getActiveSheet();
var data = sheet.getDataRange().getValues();
for (var i = data.length - 1; i >= 0; i--) {
if (data[i][0].match(/take([^a-z]*)home/i)) sheet.deleteRow(i + 1);
}
}

最新更新