首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我如何删除提及“外带”或类似短语的单元格?

我如何删除提及“外带”或类似短语的单元格?
EN

Stack Overflow用户
提问于 2022-09-08 13:34:40
回答 3查看 44关注 0票数 -1

我想从本表格中删除所有提到“外卖”、“带回家”、“带回家”等的工作:https://docs.google.com/spreadsheets/d/1UgiKHokV3bpeuCF4lhgc9aQisE3c86OyVjZeats9u24/edit#gid=0

此代码不执行任何操作:

代码语言:javascript
复制
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); 
     }
  }
}

我该怎么做,谢谢!

EN

回答 3

Stack Overflow用户

发布于 2022-09-08 13:40:24

试着改变台词:

代码语言:javascript
复制
if (data[i][0].includes('takehome')) {
sheet.deleteRow(i); 

通过以下方式:

代码语言:javascript
复制
if (data[i][0].match(/take([^a-z]*)home/i)) {
sheet.deleteRow(i+1); 

[^a-z]*指的是除字母顺序从a到z之外的任何(或无)符号。

i的意思是忽略案例。

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

代码语言:javascript
复制
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);
  }
}
票数 0
EN

Stack Overflow用户

发布于 2022-09-08 14:15:51

我做了这个改变,它起了作用:

代码语言:javascript
复制
var ss = SpreadsheetApp.openById("1UgiKHokV3bpeuCF4lhgc9aQisE3c86OyVjZeats9u24");
var sheet = ss.getSheets()[0];
var data = sheet.getDataRange().getValues();
票数 0
EN

Stack Overflow用户

发布于 2022-09-08 14:18:19

试试这个:

代码语言:javascript
复制
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())
    })
  })

}

另一种可能性是:

代码语言:javascript
复制
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())
  })
}

后者将处理包括多个字符在内的所有介于“带回”和“回家”之间的内容。它将删除所有这些:

代码语言:javascript
复制
take   home
take-home
takehome
take_home help
takehome
take and add a bunch of charactors home
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73649934

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档