简单地说,我使用以下代码片段来使用高级 Google 服务创建过滤器 View
function applyFilter(sheetName, sheetId, colNo, startRowIndex, criteria) {
delFilterViews(sheetName)
var ss = SpreadsheetApp.openById("1cnYgUIdJZShvywco00xttiS293t_H9P7RTsBcOvJbBM");
var ssId = ss.getId();
var dataSheet = ss.getSheetByName("Follow Up Sheet");
var lastRow = dataSheet.getLastRow();
var lastColumn = dataSheet.getLastColumn();
var key = colNo;
var filterSettings = {
"title": criteria,
"range": {
"sheetId": sheetId,
"startRowIndex": startRowIndex,
"endRowIndex": lastRow,
"startColumnIndex": 0,
"endColumnIndex": lastColumn
},
"criteria": {
}
};
filterSettings.criteria[colNo] = {
"condition": {
"type": "TEXT_CONTAINS",
"values": [
{
"userEnteredValue": criteria
}
]
}
}
var requests = [{
"addFilterView": {
"filter": filterSettings
}
}];
}
到目前为止,代码工作得很好,但它只是创建了 FilterView,我正在寻找的是如何以编程方式将此 FilterView 应用于用户?
最佳答案
创建过滤器 View 后,您可以检索其 ID 并将其与 fvid=...
附加到电子表格的 URL,如 here 那样。 :
https://docs.google.com/spreadsheets/d/XXXXXX/edit#gid=0&fvid=YYYYYY
要将过滤器 View 应用于用户,用户需要使用包含过滤器 View ID 的 URL 打开电子表格 - 这是唯一的方法。
现在,如果您想动态创建和应用过滤器 View ,您可以将 Apps 脚本代码转换为 Web App和redirect用户访问动态创建的 URL。
换句话说:不要让用户从驱动器中打开电子表格,而是让他通过打开 WebApp URL 并重定向到正确的过滤器 View 来完成此操作。
如果您将 Web 应用程序部署为“访问应用程序的用户”,您甚至可以动态创建不同的筛选器 View ,具体取决于哪个用户打开 Web 应用程序 URL。
关于javascript - 如何在 Sheets API 中创建 FilterView 后启用它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60053338/