AdO*_*One 5 filtering google-sheets google-apps-script
您知道为什么该getVisibleValues()函数不返回任何值吗?我想获得一个过滤标准,例如在本例中(屏幕截图)我想获得“A”值。我试过了getCriteriaValues(),getValues()也行不通。它不会返回任何值。只有该getHiddenValues()函数有效并正确返回“B、C、D”。

function myFunction() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Test1');
var filter = sheet.getRange('A1:C').getFilter();
var values = filter.getColumnFilterCriteria(3).getVisibleValues();
Logger.log(values);
}
Run Code Online (Sandbox Code Playgroud)
这似乎是一个错误。您可以在问题跟踪器中报告。
请参阅问题159051708:
状态:不会修复(预期行为)
不幸的是,目前不支持这些方法。当您尝试在脚本中使用它们时,您将看到一条异常消息:
目前不支持可见值。作为替代方案,指定隐藏值列表,其中排除应可见的值。
支持隐藏值。
您可以创建一个单独的函数来模拟这一点:
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));
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1770 次 |
| 最近记录: |