我有一个电子表格,其中设置了各种过滤器视图。通常这很有效,但偶尔会添加新行,我必须手动更新每个过滤器视图中的范围。我尝试在线搜索解决方案,并提出了以下可能更新范围的代码:
function UpdateFilterView() {
var dataSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Data');
//for each (var dataSheet in sheets){
var lastRow = dataSheet.getLastRow();
var lastColumn = dataSheet.getLastColumn();
var sheetId = dataSheet.getSheetId();
var filterSettings = {
"filterViewId": "319575141",
"range":{
"sheetId": sheetId,
"startRowIndex": 1,
"endRowIndex": lastRow,
"startColumnIndex": 1,
"endColumnIndex": lastColumn
}
//}
};
var requests = [{
"fields": "*",
"updateFilterView":{
"filter": filterSettings
}
}];
Sheets.Spreadsheets.batchUpdate({"requests":requests},sheetId);
}
我从我发现的帖子中获取了大部分代码(here https://stackoverflow.com/questions/57170590/how-to-write-a-google-script-that-auto-updates-the-filter-range-for-personal-fil?answertab=votes#tab-top)但由于某种原因它不会更新指定的过滤器。我错过了什么吗?另外,当我运行代码“ReferenceError:Sheets 未定义(第 32 行,文件“Code”)”时,出现以下错误,其中引用了“Sheets.Spreadsheets.....”行。
对于这是否可能有什么想法吗?
从您的回复中,我可以确认,在您目前的情况下,高级Google服务启用了Sheets API。由此,我可以确认您的错误消息已更改。为了解决新的问题,这次修改怎么样?
修改要点:
- 请修改
sheetId
of Sheets.Spreadsheets.batchUpdate({"requests":requests},sheetId);
到电子表格 ID。
- 请包括
"fields": "*"
在对象中updateFilterView
.
当您的脚本修改时,请修改如下。
修改后的脚本:
function UpdateFilterView() {
var ss = SpreadsheetApp.getActiveSpreadsheet(); // Added
var dataSheet = ss.getSheetByName('Data'); // Modified
var lastRow = dataSheet.getLastRow();
var lastColumn = dataSheet.getLastColumn();
var sheetId = dataSheet.getSheetId();
var filterSettings = {
"filterViewId": "319575141",
"range":{
"sheetId": sheetId,
"startRowIndex": 1,
"endRowIndex": lastRow,
"startColumnIndex": 1,
"endColumnIndex": lastColumn
}
};
var requests = [{
"updateFilterView":{
"filter": filterSettings,
"fields": "*", // Modified
}
}];
Sheets.Spreadsheets.batchUpdate({"requests":requests}, ss.getId()); // Modified
}
Note:
- When
filterViewId
of 319575141
不正确,像这样的错误Invalid value at 'requests[0].update_filter_view.filter.filter_view_id
发生。请小心这一点。
参考:
- 方法:spreadsheets.batchUpdate https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets/batchUpdate
- 更新过滤器视图请求 https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets/request#updatefilterviewrequest
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)