从批处理中检索filterViewID更新请求addFilterView
我可以使用batchUpdate
发出addFilterView
请求。我的问题是,如何检索已创建的filterViewId
?
以下是我使用的代码:
var filterSettings = {
"title":criteria,
"range": {
"sheetId": sheetId,
"startRowIndex": startRowIndex,
"endRowIndex": 99999,
"startColumnIndex": 0,
"endColumnIndex": lastColumn
},
"criteria": {
}
};
filterSettings.criteria[colNo] = {
"condition": {
"type": "TEXT_CONTAINS",
"values": [
{
"userEnteredValue": criteria
}
]
}
}
var requests = [{
"addFilterView": {
"filter": filterSettings
}
}];
Sheets.Spreadsheets.batchUpdate(
{
requests: requests
},
ssId
);
解决方案
- 您要从创建的筛选器视图中检索
filterViewId
。 - 您希望使用Google Apps脚本来实现此目的。
如果我的理解是正确的,那么这个答案如何?请将此视为几个可能的答案之一。
模式1:
在此模式中,当运行BatchUpdate方法时,将从返回值中检索filterViewId
。
请按如下方式修改。
修改后的脚本:
出发地:Sheets.Spreadsheets.batchUpdate(
{
requests: requests
},
ssId
);
致:
var res = Sheets.Spreadsheets.batchUpdate({requests: requests}, ssId);
var filterViewId = res.replies[0].addFilterView.filter.filterViewId;
Logger.log(filterViewId)
模式2:
在此模式中,filterViewId
是通过使用spadsheets.get in Sheets API方法检索的。在这种情况下,将按工作表名称和筛选器视图标题检索结果。
示例脚本:
function myFunction() {
var sheetName = "Sheet1"; // Please set the sheet name.
var filterViewTitle = "sampleName"; // Please set the filter view title.
var ss = SpreadsheetApp.getActiveSpreadsheet();
var ssId = ss.getId();
var res = Sheets.Spreadsheets.get(ssId);
var sheet = res.sheets.filter(function(s) {return s.properties.title == sheetName});
if (sheet.length == 1) {
sheet[0].filterViews.forEach(function(f) {
if (f.title == filterViewTitle) {
Logger.log(f.filterViewId)
}
});
}
}
注意:
- 在上面的脚本中,它假设已经在高级Google服务中启用了Sheet API。
参考:
- Method: spreadsheets.get
如果我误解了您的问题,并且这不是您想要的方向,我向您道歉。
相关文章