删除找到字符串的整行

时间:2016-07-09 04:11:56

标签: google-apps-script google-sheets

我正在尝试编写一个google脚本,如果该行包含带字符串的单元格,则会删除该行。

以下是我现在使用的代码:

function myFunction() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var s = ss.getSheetByName('Test'); 
  var values = s.getDataRange().getValues();
    for(var i=values.length;i>0;i-=1){
     var lcVal=values[i-1][0].toLowerCase() 
     var index = lcVal.indexOf("deleteme"); 
     if (lcVal.indexOf("deleteme") > -1){
     s.deleteRow(i)};
  }}

理想情况下,这将通过并删除具有包含“deleteme”的单元格的行。我还想指定一个可以检查的单元格范围(即从第9行开始的整个A列),但我还没有想出那个部分。

现在,当我尝试运行它时没有任何反应,并且单元格没有被删除。

1 个答案:

答案 0 :(得分:0)

首先,请记住GAS基于JavaScript。因此,如果您仅仅在确定错误的方面使用JavaScript,则可能需要添加该标记。您可能已经对这个问题有了答案......或者它已经被标记为重复的问题。如果您这样做,请务必指出您正在询问JavaScript部分,否则只需将片段放入JS中即可。

二。 Logger.log()是你的朋友。一切都以-1返回,所以什么也没发生。如果您输入这样的几行,然后在运行后查看日志,您可以看到发生了什么。 (我把它们留下来是合理的,所以我记得在调用脚本完成之前拉它们或者评论它们。)

function myFunction() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var s = ss.getSheetByName('Sheet11'); 
  var values = s.getDataRange().getValues();
Logger.log(values);
  for(var i=values.length;i>0;i-=1){

     var lcVal=values[i-1][0].toLowerCase() 
     var index = lcVal.indexOf("Science"); 
Logger.log("lcVal and index are: " + lcVal + " ... " + index + " and values.indexofscience is: " + values.indexOf("science"));
      if (lcVal.indexOf("Science") > -1){
      s.deleteRow(i)};
  }}

这导致此日志:

[16-07-09 10:56:15:285 EDT] [[science], [math], [science], [english], [ELA], [History], [Elective], [Science]]
[16-07-09 10:56:15:286 EDT] lcVal and index are: science ... -1 and values.indexofscience is: -1
[16-07-09 10:56:15:286 EDT] lcVal and index are: elective ... -1 and values.indexofscience is: -1
[16-07-09 10:56:15:286 EDT] lcVal and index are: history ... -1 and values.indexofscience is: -1
[16-07-09 10:56:15:287 EDT] lcVal and index are: ela ... -1 and values.indexofscience is: -1
[16-07-09 10:56:15:287 EDT] lcVal and index are: english ... -1 and values.indexofscience is: -1
[16-07-09 10:56:15:288 EDT] lcVal and index are: science ... -1 and values.indexofscience is: -1
[16-07-09 10:56:15:288 EDT] lcVal and index are: math ... -1 and values.indexofscience is: -1
[16-07-09 10:56:15:289 EDT] lcVal and index are: science ... -1 and values.indexofscience is: -1

因此,我的测试表中的科学和科学词语没有返回索引位置。那时你需要深入研究indexOf()或者以不同的方式做事。

第三......或者它应该是第1个/第0个......问你是否正在做一些独特的事情,或者是否曾经有过这样的事情。查找字符串并删除一行是很常见的事情。 SE和其他网站上有很多答案。 here是一个应该通过对方法进行良好讨论的方式来帮助您。我不会重复它。