我想删除所有提到"外卖""带回家""带回家";,等等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);
}
}