Google工作表,获取行的范围,其中列相交的单元格为空

时间:2014-09-04 15:04:45

标签: sorting google-apps-script google-sheets

基本上我想通过Google表格中的脚本编辑器使用自动排序脚本,但是我希望它通过选择特定列具有空单元格的那些行来巧妙地选择一系列行。

填充了该列的单元格的所有其他行将保持不变。这是我找到的排序代码。

 /**
 * Automatically sorts the 1st column (not the header row) Ascending.
 */
function onEdit(event){
  var sheet = event.source.getActiveSheet();
  var editedCell = sheet.getActiveCell();

  var columnToSortBy = 1;
  var tableRange = "A2:T99"; // What to sort.

  if(editedCell.getColumn() == columnToSortBy){   
    var range = sheet.getRange(tableRange);
    range.sort( { column : columnToSortBy, ascending: true } );
  }
}

感谢。

1 个答案:

答案 0 :(得分:1)

注意:这只会对单元格中的值进行排序(格式,注释等元数据不会像使用GAS range.sort()方法那样进行排序。)

function onEdit(event)
{
  var sheet = event.source.getActiveSheet();
  var editedCell = sheet.getActiveCell();

  var columnToSortBy = 0; // zero-based index

  if (editedCell.getColumn() == columnToSortBy)
  {
    var columnToWatch = 5; // checking this column for blank cells (zero-based index)
    var tableRange = "A2:T99"; // what to sort

    var range = sheet.getRange(tableRange);
    var data = range.getValues();
    var dataCopy = data.slice();
    dataCopy.sort(function(a, b) {return a[columnToSortBy] > b[columnToSortBy] ? 1 : (a[columnToSortBy] < b[columnToSortBy] ? -1 : 0);});
    var j = -1;
    for (var i = 0, length = data.length; i < length; i++)
    {
      if (data[i][columnToWatch].toString().length)
      {
        do j++; while (!dataCopy[j][columnToWatch].toString().length);
        data[i] = dataCopy[j];
      }
    }
    range.setValues(data);  
  }
}