function - 如何通过 Google 表格脚本使用过滤器工具
问题描述
我想要一个函数,它从一个单元格中获取一个值,并在我在另一张表中的过滤器中使用它来仅过滤该值。我怎样才能做到这一点?
先感谢您。
解决方案
解决方案:
- 假设过滤器已经创建,通过Sheet.getFilter()检索它。
- 从您要显示的单元格中检索值 (
VALUE
) 以及从所需的筛选列 (FILTER_DATA
) 中检索数据。为此使用getRange、getValue()和getValues()。 - 过滤掉所有提及
VALUE
fromFILTER_DATA
。您可以为此使用Array.prototype.filter()。 - 使用SpreadsheetApp.newFilterCriteria()创建一个FilterCriteria并使用FilterCriteriaBuilder构建它。由于您只想显示带有 的行,因此您必须隐藏所有其他行(因为当前不支持setVisibleValues(values))。您可以为此使用setHiddenValues(values)。
VALUE
代码片段:
function filterValues() {
const ss = SpreadsheetApp.getActive();
const sourceSheet = ss.getSheetByName("Source"); // Change
const filterSheet = ss.getSheetByName("Filter"); // Change
const a1Notation = "A1"; // Change
const value = sourceSheet.getRange(a1Notation).getValue();
const filter = filterSheet.getFilter();
const columnIndex = 2; // Change
const filterValues = filterSheet.getRange(2,columnIndex,filterSheet.getLastRow()-1)
.getValues().flat();
const hideValues = filterValues.filter(current => current !== value);
const filterCriteria = SpreadsheetApp.newFilterCriteria()
.setHiddenValues(hideValues)
.build();
filter.setColumnFilterCriteria(columnIndex, filterCriteria);
}
笔记:
- 在上面的示例中,用作标准的列是
B
, 所以columnIndex=2
。此外,工作表被命名为Source
和Filter
,并且所需的值在A1
中Source
。请根据您的喜好更改所有这些。
推荐阅读
- rx-java - RxJava 3.0.0 中不再使用 Disposables 了吗?
- python - 如何使用 Python 连接到 localhost python flask API
- kubernetes - 在sts中的环境变量中动态赋予.cluster.local DNS
- excel - 计算多个条件
- java - 删除自身内部的 Java 便利事件处理程序
- python - 无法使用 Django 显示静态文件夹中的图像
- python - 如何使用 python 运行 .mod 文件(CPLEX)?
- azure-resource-manager - Azure 更新管理 - ARM 服务配置
- postgresql - 如何使用 pgxn?
- javascript - ReactJS 自己添加了 display:none 吗?