google-apps-script - 如何在 Google 表格中刷新过滤器 onEdit()?
问题描述
我有一张表,根据我在下拉列表中选择的值,我用 Hlookups 填充数据。
每次更改下拉列表中的值(这会更改整个数据集)时,我都想过滤(隐藏)第 3 列中具有 NULL 或空白值的行。
如果我创建一个普通过滤器,它不会在数据更改时刷新。
var PARAMETER_ROW_NUMBER = 5; //The parameters goes from Row 1 to this Row
var PARAMETER_COLUMN_NUMBER = 2; //The column where the dropdowns with the parameters for the VLOOKUPs are
function onEdit()
{
var thisSheet = SpreadsheetApp.getActiveSheet();
if( thisSheet.getName() == "By Place" )
{
var cell = thisSheet.getActiveCell();
var cellRow = cell.getRow();
var cellColumn = cell.getColumn();
if( cellColumn == PARAMETER_COLUMN_NUMBER && cellRow <= PARAMETER_ROW_NUMBER)
{
setFilter(); // Execute the filter to clean null rows each time I change the values in the dropdowns
var rowDiff = PARAMETER_ROW_NUMBER - cellRow;
cell.offset( 1, 0, rowDiff).setValue(''); // As the parameters are dependent dropdowns, I clear the dropdowns if one changes
}
}
}
function setFilter()
{
var ss = SpreadsheetApp.getActiveSheet();
var rang = ss.getDataRange();
var filtercriteria = SpreadsheetApp.newFilterCriteria().setHiddenValues([' ','']).build();
var filter = rang.getFilter() || rang.createFilter();
filter.setColumnFilterCriteria(3, filtercriteria); // I want to hide the rows which has a null or blank in column 3
}
setFilter() 函数不起作用。
解决方案
您用于设置隐藏值的数组不正确,请尝试如下代码:
function setFilter()
{
var ss = SpreadsheetApp.getActiveSheet();
var rang = ss.getDataRange();
var filterCriteria = SpreadsheetApp
.newFilterCriteria()
.setHiddenValues(['NULL', ''])
.build();
var filter = rang.getFilter() || rang.createFilter();
filter.setColumnFilterCriteria(3, filterCriteria);
}
此外,如果您想查看onEdit
执行的日志,您可以通过单击View -> Executions在您的 Apps 脚本文件中检查它们,在那里您将能够看到您遇到的错误。
文档
我使用这些文档来帮助您:
推荐阅读
- python - Spacy - 使用维基百科描述的实体链接
- ruby-on-rails - 基于rails中其他字段的验证?
- c# - ClientWebSocket 示例挂起
- javascript - 父组件中定义的数组不能被切片
- javascript - 当我有多个图像时,绘制图像无法正常工作
- sql - SQL - 如何使用条件进行左连接?
- symfony - Doctrine Query 反向连接?
- python - 在python中运行终端脚本?
- npm - ng-stripe-checkout 模块导入 Angular 9
- python - 如何在用@tf.function 装饰的函数内部使用for循环对tf.data.Dataset进行操作和返回tf.Variable?