Google apps script Google工作表中的批量删除过滤器视图
我找到了,但似乎找不到任何有效的方法 问题:我有一个几十人使用的电子表格,随着时间的推移,已经创建了超过200个过滤视图。我想批量删除工作簿中一张工作表中的所有筛选视图 我在启用GoogleSheetsAPI后尝试过这种方法。它会运行,但遗憾的是,所有的过滤器视图仍然存在Google apps script Google工作表中的批量删除过滤器视图,google-apps-script,google-sheets,google-sheets-api,google-sheets-filter-view,Google Apps Script,Google Sheets,Google Sheets Api,Google Sheets Filter View,我找到了,但似乎找不到任何有效的方法 问题:我有一个几十人使用的电子表格,随着时间的推移,已经创建了超过200个过滤视图。我想批量删除工作簿中一张工作表中的所有筛选视图 我在启用GoogleSheetsAPI后尝试过这种方法。它会运行,但遗憾的是,所有的过滤器视图仍然存在 function clearFilter() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var ssId = ss.getId(); var s
function clearFilter() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var ssId = ss.getId();
var sheetId = ss.getActiveSheet().getSheetId();
var requests = [{
"clearBasicFilter": {
"sheetId": sheetId
}
}];
Sheets.Spreadsheets.batchUpdate({'requests': requests}, ssId);
}
谢谢大家
过滤器视图的图像:
问题:
- 您正在发出清除筛选器请求,该请求仅清除当前筛选器
- 您必须发出
请求deleteFilterView
过滤器*
?@Dave是的。您可以在filterViews
上使用和,而不仅仅是.map
。如果经过合理努力后仍无法执行,请提出新问题
function delFilterViews() {
var ssId = SpreadsheetApp.getActive().getId();
Sheets.Spreadsheets.batchUpdate(
{
requests: Sheets.Spreadsheets.get(ssId, {
ranges: 'Sheet1', //Sheet in which filterviews are present
fields: 'sheets/filterViews/filterViewId',
}).sheets[0].filterViews.map(function(e) {
return { deleteFilterView: { filterId: e['filterViewId'] } }; //create a new delete filter view request for each filter view present in sheet1
}),
},
ssId
);
}