【问题标题】:Modify Code - Delete a row of data referenced from a cell. Google Apps Script / Google Sheets修改代码 - 删除从单元格引用的一行数据。 Google Apps 脚本/Google 表格
【发布时间】:2020-02-17 08:52:26
【问题描述】:

我想修改下面的代码,而不是将其固定在代码中 - 它会根据某个单元格删除一行。因此,如果 H2 已“预期”,它将查看数据范围并删除包含预期的任何行。然后,如果您将 H2 更改为“已完成”,它将运行脚本并删除包含已完成等的所有行。我将从自定义菜单运行它。

 function DeleteText() {
 // This Code will delete any "Donation Sub-Task" in Column A.
 var sheet = SpreadsheetApp.getActive();
 sheet.setActiveSheet(sheet.getSheetByName('JIRA JQL QUERY - READ ONLY'), true);
 var rows = sheet.getDataRange();
 var numRows = rows.getNumRows();
 var values = rows.getValues();
 var rowsDeleted = 0;
 for (var i = 0; i <= numRows - 1; i++) {
 var row = values[i];
  if (row[0] == 'expected') {
 sheet.deleteRow((parseInt(i)+1) - rowsDeleted);
 rowsDeleted++;
     }
   }
 };

一如既往地提前致谢

【问题讨论】:

  • 由于您使用的是row[0] - 您的值是否要在 A 行中检查?
  • Ross - 不,数据并不总是在 A 列中。希望像 row[0,1,2,3,4,5] 这样的东西?

标签: google-apps-script google-sheets


【解决方案1】:

要求:

根据单元格“H2”中的值删除行的脚本。


脚本:

function findAndDeleteRows() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('JIRA JQL QUERY - READ ONLY');
  var range = sheet.getDataRange();
  var value = sheet.getRange('H2').getValue();
  var find = range.createTextFinder(value).findAll().reverse();
  if (find.length > 0) {
    for (i = 0; i < find.length; i++) {
      sheet.deleteRow(find[i].getRow());
    }
  }
}

说明:

我们可以使用TextFinder 轻松实现这一点,它会返回包含您的特定文本的所有行。我使用Array.reverse() 以便从底部向上删除行,否则您将删除想要保留的行。一旦我们得到了我们需要的所有行,我们就可以遍历它们并使用.deleteRow() 来删除它们。


参考资料:

【讨论】:

  • Ross - 这个脚本不需要我用我想要删除的文本不断更新脚本吗?这就是我目前必须做的(我希望这个脚本会查看 H2,并且它会删除任何文本。)
  • @TomSawkins 我已经更新了脚本来执行此操作。
猜你喜欢
  • 2020-05-24
  • 2016-10-21
  • 2021-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多