从批处理中检索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

如果我误解了您的问题,并且这不是您想要的方向,我向您道歉。

相关文章