如何在使用Google Apps脚本迭代Google电子表格时跳过隐藏的行

kev*_*818 10 google-apps google-sheets google-apps-script

我有一个包含许多隐藏行的Google电子表格,我想在迭代电子表格中的行列表时跳过它们.

这主要是一个效率问题,因为我正在处理超过一半的行被隐藏而不需要被检查.

任何帮助,将不胜感激.

小智 5

在Apps脚本中没有直接的方法可以执行此操作,但是如果要对其进行加注,则会打开一个功能请求以提供获取行的显示/隐藏状态的方法.

  • 现在这个要求已经开放了三年.今天,有89颗星,这是Sheets api功能在前10名中最早的要求. (2认同)

Chr*_*eek 5

使用 的解决方法SUBTOTAL。创建 2 列 A 和 B。A 必须始终有一个值,B 必须有一组公式。这两列看起来像这样:

A |           B
---------------------------
1 | =NOT(SUBTOTAL(103, A1))
1 | =NOT(SUBTOTAL(103, A2))
1 | =NOT(SUBTOTAL(103, A3))
Run Code Online (Sandbox Code Playgroud)

SUBTOTAL使用指定的聚合函数返回小计。第一个参数 103 定义用于聚合的函数的类型。第二个参数是应用函数的范围。

  • 3 表示COUNTA并计算范围内的值的数量
  • +100 表示忽略范围内的隐藏单元格。

当单元格隐藏时,范围为 1 个单元格的结果SUBTOTAL将为 0;当单元格显示时,结果将为 1。NOT颠倒它。

现在您可以使用脚本读取 B 列来了解某行是否被隐藏。

这是转置的问题和答案:/sf/answers/1949232631/


Gra*_*ave 5

2018 年的新 API 对这个问题很有用:isRowHiddenByUser。另见isRowFilteredByUser