Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 使用Google apps脚本从选定单元格中删除行_Google Apps Script_Google Sheets - Fatal编程技术网

Google apps script 使用Google apps脚本从选定单元格中删除行

Google apps script 使用Google apps脚本从选定单元格中删除行,google-apps-script,google-sheets,Google Apps Script,Google Sheets,目标是,当我从同一列中选择两个或多个单元格并单击“删除”按钮时,所选单元格的行将被删除 到目前为止,我已经创建了以下代码: function Eliminar_filas() { var spreadsheet = SpreadsheetApp.getActive(); var sheet = spreadsheet.getActiveSheet(); spreadsheet.getRangeList([sheet.getRange(spreadsheet.getCurrentC

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

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

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一样

我已经苦苦挣扎了好几个小时,试图找到一个解决方案,尝试了各种方法,但都没有成功

在谷歌和stackoverflow进行了详尽的搜索之后,我看到了类似的案例,但总是会遇到一些条件或巧合,实际上,作为一个新手,我不知道如何适应我的需要

这里有人能帮我写代码吗?我做错了什么?最佳做法是什么?任何帮助都将不胜感激

对不起,我的英语不好


非常感谢。

我相信你的目标如下

  • 您想使用Google Apps脚本删除选定单元格的行
修改点:
  • 在脚本中,似乎检索到了一个活动范围。在谷歌电子表格服务中有一种
    getActiveRangeList()
    方法。在你的情况下,我认为这可能是可以使用的
当这一点反映到脚本中时,它将变成如下所示

示例脚本:
  • 使用此脚本时,请选择单元格并运行脚本。这样,所选单元格的行将被删除
  • 在这个示例脚本中,首先使用
    getActiveRangeList()
    检索活动范围列表,然后检索范围,然后按降序对检索到的范围进行排序,并删除每一行
  • 在这种情况下,使用
    getNumRows()
    ,当您选择多个单元格时,可以进行此操作
参考资料:

    • 我相信你的目标如下

      • 您想使用Google Apps脚本删除选定单元格的行
      修改点:
      • 在脚本中,似乎检索到了一个活动范围。在谷歌电子表格服务中有一种
        getActiveRangeList()
        方法。在你的情况下,我认为这可能是可以使用的
      当这一点反映到脚本中时,它将变成如下所示

      示例脚本:
      • 使用此脚本时,请选择单元格并运行脚本。这样,所选单元格的行将被删除
      • 在这个示例脚本中,首先使用
        getActiveRangeList()
        检索活动范围列表,然后检索范围,然后按降序对检索到的范围进行排序,并删除每一行
      • 在这种情况下,使用
        getNumRows()
        ,当您选择多个单元格时,可以进行此操作
      参考资料:

      再次感谢您的帮助!我真的很喜欢它。我很感激像你这样的人愿意帮助像我这样无知的人和新人。代码工作起来很有魅力。它也会一点一点地学习,谢谢你。@Nerea谢谢你的回答。我很高兴你的问题解决了。也谢谢你。再次感谢你的帮助!我真的很喜欢它。我很感激像你这样的人愿意帮助像我这样无知的人和新人。代码工作起来很有魅力。它也会一点一点地学习,谢谢你。@Nerea谢谢你的回答。我很高兴你的问题解决了。也谢谢你。
      function Eliminar_filas() {
        SpreadsheetApp
          .getActiveRangeList()
          .getRanges()
          .sort((a, b) => a.getRow() > b.getRow() ? -1 : 1)
          .forEach(r => r.getSheet().deleteRows(r.getRow(), r.getNumRows()));
      }