自动排序范围,但仅在激活“筛选器视图”时

时间:2019-07-18 10:24:45

标签: google-apps-script google-sheets

我有一个使用两个视图的Google电子表格:

  • 无过滤器视图可添加数据。行仅添加在底部。
  • 筛选器视图(按列排序)以读取/处理数据。

在“过滤器”视图中,用户可以更新一些单元格,这将更改排序顺序。我希望排序立即更新。

我已经找到了许多在线脚本,它们可以在编辑时自动进行排序,但是我只希望在激活“过滤器”视图时发生这种情况。

我没有找到检测某个Filter视图是否处于活动状态的方法,也没有发现任何可返回当前列排序的方法。

关于如何做到这一点的任何想法?

1 个答案:

答案 0 :(得分:2)

您可以在排序函数中编写一个简单条件,以测试工作表过滤器是否处于活动状态。 Sheet类的isRowHiddenByFilter(rowPosition)方法返回给定的行是否被过滤器隐藏。

function checkSheetFilter() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var rows = sheet.getRange(1,1, sheet.getLastRow(), 1).getValues().length;
  var isFilterActive = false;
  for (var r=0; r<rows && !isFilterActive; r++) {
    if (sheet.isRowHiddenByFilter(r+1)) {
      isFilterActive = true
    }
  }
  Logger.log(isFilterActive);
}