Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.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 Script_Google Sheets - Fatal编程技术网

Google apps script 自动排序范围,但仅当过滤器视图处于活动状态时

Google apps script 自动排序范围,但仅当过滤器视图处于活动状态时,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我有一个谷歌电子表格,它使用两个视图: 没有要添加数据的筛选器视图。行仅添加在底部 筛选视图,在列上进行排序,以读取/处理数据 在“过滤器”视图中,用户可以更新某些单元格,从而更改排序顺序。我想排序立即更新 我在网上找到了很多脚本,可以在编辑时自动排序,但我只希望在过滤器视图处于活动状态时发生这种情况 我还没有找到检测某个过滤器视图是否处于活动状态的方法,也没有找到任何返回当前列排序的方法 有什么办法吗?您可以在排序函数中编写一个简单条件,用于测试纸张过滤器是否处于活动状态。Sheet类的i

我有一个谷歌电子表格,它使用两个视图:

  • 没有要添加数据的筛选器视图。行仅添加在底部
  • 筛选视图,在列上进行排序,以读取/处理数据
在“过滤器”视图中,用户可以更新某些单元格,从而更改排序顺序。我想排序立即更新

我在网上找到了很多脚本,可以在编辑时自动排序,但我只希望在过滤器视图处于活动状态时发生这种情况

我还没有找到检测某个过滤器视图是否处于活动状态的方法,也没有找到任何返回当前列排序的方法


有什么办法吗?

您可以在排序函数中编写一个简单条件,用于测试纸张过滤器是否处于活动状态。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);
}
函数checkSheetFilter(){
var sheet=SpreadsheetApp.getActiveSheet();
var rows=sheet.getRange(1,1,sheet.getLastRow(),1).getValues().length;
var isFilterActive=false;

对于(var r=0;r)该筛选器视图没有筛选出任何行,只是进行了不同的排序。我是否应该添加一个虚拟行并将其筛选出来?为什么不使用筛选器?@TheMaster:问题是,当数据发生更改时,排序不会立即更新。