更新谷歌表格"Filter View"与新范围



我有一个电子表格,其中设置了各种过滤器视图。通常这很好用,但偶尔会添加新行,我必须手动更新每个过滤器视图中的范围。我尝试在线搜索解决方案,并提出了以下代码,可能会更新范围:

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);
}

我从我找到的帖子(这里(中获取了大部分代码,但由于某种原因它不会更新指定的过滤器。我错过了什么吗?另外,当我运行代码"参考错误:未定义工作表(第 32 行,文件"代码"("时,我收到以下错误,其中引用了"工作表.电子表格....."。

关于这是否可能的任何想法?

从您的回复中,我可以确认在您当前的情况下,高级Google服务启用了Sheets API。通过这种方式,我可以确认您的错误消息已更改。为了解决新问题,此修改如何?

修改点:

  • 请将Sheets.Spreadsheets.batchUpdate({"requests":requests},sheetId);sheetId修改为电子表格 ID。
  • 请在updateFilterView对象中包含"fields": "*"

修改脚本时,请按如下方式修改。

修改后的脚本:

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
}

注意:

  • 319575141filterViewId不正确时,会发生类似Invalid value at 'requests[0].update_filter_view.filter.filter_view_id的错误。请小心这一点。

引用:

  • 方法:电子表格.批处理更新
  • 更新过滤器视图请求

最新更新