【问题标题】:Delete rows from selected cells with Google apps script使用 Google Apps 脚本从选定单元格中删除行
【发布时间】:2021-08-16 15:04:40
【问题描述】:

目标是当我从同一列中选择两个或多个单元格并单击“删除”按钮时,将删除所选单元格的行。

到目前为止,我已经创建了以下代码:

function Eliminar_filas() {

  var spreadsheet = SpreadsheetApp.getActive();
  var sheet = spreadsheet.getActiveSheet();

  spreadsheet.getRangeList([sheet.getRange(spreadsheet.getCurrentCell().getRow() + 1,1,1, sheet.getMaxColumns()).getA1Notation()]).activate();

  spreadsheet.getActiveSheet().deleteRows(spreadsheet.getActiveRange().getRow(), spreadsheet.getActiveRange().getNumRows());
};

问题是我只能删除选定单元格中的行,而不是选定单元格中的所有行。

没有要满足的条件或匹配项,我只需要例如,如果我选择单元格 B13、B15、B20,则删除第 13、15、20 行。

现在,在范围内我无法指定特定间隔,因为根据我要消除的产品,单元格的选择是随机的,也就是说,有一天它可能是单元格 B13、B15、B20,就像另一天一样可以是单元格 B1、B40、B80。

我一直在努力寻找解决方案,尝试各种方法,但没有任何成功。

经过google和stackoverflow的详尽搜索,我看到了类似的案例,但总是遇到一些条件或巧合,真的,作为一个新手,我不知道如何适应我的需求。

附近有人会帮助我编写代码吗?我究竟做错了什么?最佳做法是什么?任何帮助将不胜感激!

对不起,我的英语不太好。

非常感谢。

【问题讨论】:

标签: google-apps-script google-sheets


【解决方案1】:

我相信你的目标如下。

  • 您想使用 Google Apps 脚本删除所选单元格的行。

修改点:

  • 在您的脚本中,似乎检索到了一个活动范围。 Google电子表格服务中有getActiveRangeList()的方法。在您的情况下,我认为这可能可以使用。

当这一点反映到脚本中时,变成如下。

示例脚本:

function Eliminar_filas() {
  SpreadsheetApp
    .getActiveRangeList()
    .getRanges()
    .sort((a, b) => a.getRow() > b.getRow() ? -1 : 1)
    .forEach(r => r.getSheet().deleteRows(r.getRow(), r.getNumRows()));
}
  • 使用此脚本时,请选择单元格并运行脚本。这样,所选单元格的行就会被删除。
  • 在此示例脚本中,首先使用getActiveRangeList() 检索活动范围列表,并检索范围,然后将检索到的范围按降序排序,并删除每一行。
  • 在这种情况下,使用getNumRows(),当您选择多个单元格时,这可以工作。

参考资料:

【讨论】:

  • 再次感谢您的帮助!我真的很疯狂。非常感谢像您这样的人愿意帮助像我这样的无知和新人。代码就像一个魅力。感谢你,它也一点一点地学习。
  • @Nerea 感谢您的回复。我很高兴你的问题得到了解决。也谢谢你。
猜你喜欢
  • 2016-10-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多