google-apps-script - 模拟获取过滤条件 - 错误 | Google Apps 脚本
问题描述
我有一个功能,其中一位用户建议获取内置谷歌表格过滤器的标准。我不知道我是否做得对,但是当我将getVisibleValues()
函数粘贴到单元格时出现错误:
TypeError:无法读取未定义的属性“getColumnFilterCriteria”(第 18 行)
function test_getVisibleValues() {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Test1");
const columnRange = sheet.getRange("C2:C");
const filter = columnRange.getFilter();
const visibleValues = getVisibleValues(filter, columnRange);
console.log(visibleValues);
}
/**
* Returns the values to show.
* Simulates https://developers.google.com/apps-script/reference/spreadsheet/filter-criteria#getvisiblevalues
* @param {Filter} filter
* @param {Range} range
* @returns {string[]}
*/
function getVisibleValues(filter, range) {
const filterCriteria = filter.getColumnFilterCriteria(range.getColumn());
const hiddenValues = filterCriteria.getHiddenValues();
const allNonBlankValues = range.getValues().filter(String);
const uniqueValues = Array.from(new Set(allNonBlankValues));
// filter unique values that aren't hidden
return uniqueValues.flat().filter(value => !hiddenValues.includes(value));
}
解决方案
解释:
您的目标是将您的代码用作自定义函数,以便将其用作工作表中的公式。
解决方案:
确保列C
包含过滤器并且此公式适用于工作表Test1
。将这些更改为您的需要或使用:
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet()
如果您想获得活动工作表。
function test_getVisibleValues(rng) {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
const range = sheet.getRange(rng);
const filter = range.getFilter();
const filterCriteria = filter.getColumnFilterCriteria(range.getColumn());
const hiddenValues = filterCriteria.getHiddenValues();
const allNonBlankValues = range.getValues().filter(String);
const uniqueValues = Array.from(new Set(allNonBlankValues));
// filter unique values that aren't hidden
return uniqueValues.flat().filter(value => !hiddenValues.includes(value));
}
您现在可以test_getVisibleValues("C2:C")
在工作表中作为公式应用,但C2:C
需要在引号内:
推荐阅读
- microsoft-graph-api - 通过 Graph API 将参考附件发送到电子邮件
- gradle - JacocoTestReport 已跳过
- node.js - 更新 NodeJS 后出现以下错误:无法加载 gRPC 二进制模块
- python - Pandas - 快速读取/写入相同的 csv.. 获取权限错误
- php - 将文件(pdf)附加到重力形式通知
- reactjs - 使用 Prerender.io 如何将爬虫重定向到我们碎片化的站点?
- emacs - 在 Emacs 根项目中保存 TAGS 文件
- arrays - 数组到对象 PHP Codeigniter
- java - 使用 Spring Converter 将 DTO 转换为实体对象,反之亦然
- shell - aws cognito 中的 set-ui-customization 中的 PNG 格式无效