删除基于活动单元格的行

时间:2013-11-26 13:57:52

标签: javascript google-apps-script

我正在尝试根据活动单元格删除行的数据。我查看了Google的文档,但我无法弄清楚如何执行此操作。我也搜索了论坛,发现了几个类似的场景,但我无法让它发挥作用。我试图通过删除数据数组并根据数组中的值删除行来做到这一点,但这也不起作用。我相信我在这里过于复杂。这是我到目前为止的代码......

function clearProject() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var source = ss.getSheetByName('Projects');
  var sourceArray = source.getRange(1,1,10).getValues();
  var sourceCell = source.getActiveCell();
  var sourceData = sourceCell.getValues();
  //var sourceRow = sourceCell.getRange(sourceCell, );
  var target = ss.getSheetByName('Timeline').getRange(1, 1, 10).getValues();

  for (var i = 0; i < sourceArray.length; i++){
    if(i == sourceData){
      sourceCell.clearContent();
    }
  }

感谢您提供的任何帮助!

2 个答案:

答案 0 :(得分:1)

首先,由于getValues返回

,您无法像if(i == sourceData)那样进行比较
  

...此范围的矩形网格值。返回一个   二维数组值,按行索引,然后按列索引。该   值可以是Number,Boolean,Date或String类型,具体取决于   细胞的价值。空单元格将以空表示   数组中的字符串。请记住,当范围索引从1,1开始时,   JavaScript数组将从[0] [0]索引。

我没有抓住你的目标,你能不能再加一些解释?

答案 1 :(得分:0)

可能就是这么简单:

function delRowsInActiveRange() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var source = ss.getActiveRange();
  var height = source.getValues().length;
  var rowPosition = source.getRowIndex();
  ss.getActiveSheet().deleteRows(rowPosition, height);
}

此功能删除包含所选单元格的所有行。