This question already has an answer here:
How to apply a GoogleSheet Filterview via Google Apps Script?
                            
                                (1个答案)
                            
                    
                3个月前关闭。
        

    

简而言之,我正在使用以下代码使用Advanced Google Services创建过滤器视图

function applyFilter(sheetName, sheetId, colNo, startRowIndex, criteria) {

  delFilterViews(sheetName)
  var ss = SpreadsheetApp.openById("1cnYgUIdJZShvywco00xttiS293t_H9P7RTsBcOvJbBM");
  var ssId = ss.getId();
  var dataSheet = ss.getSheetByName("Follow Up Sheet");
  var lastRow = dataSheet.getLastRow();
  var lastColumn = dataSheet.getLastColumn();

  var key = colNo;
  var filterSettings = {
  "title": criteria,
  "range": {
  "sheetId": sheetId,
  "startRowIndex": startRowIndex,
  "endRowIndex": lastRow,
  "startColumnIndex": 0,
  "endColumnIndex": lastColumn
  },
    "criteria": {
    }
  };

  filterSettings.criteria[colNo] = {
       "condition": {
         "type": "TEXT_CONTAINS",
         "values": [
           {
             "userEnteredValue": criteria
           }
         ]
       }
     }

   var requests = [{
    "addFilterView": {
    "filter": filterSettings
  }
  }];
  }


到目前为止,代码可以正常运行,但是它只是创建FilterView,我正在寻找的是如何以编程方式将此FilterView应用到用户?

最佳答案

创建过滤器视图后,您将获取其ID,并在电子表格的URL后面添加fvid=...,如here所示:

https://docs.google.com/spreadsheets/d/XXXXXX/edit#gid=0&fvid=YYYYYY

要将filterview应用于用户,用户需要使用包含filterview ID的URL打开电子表格-这是唯一的方法。

现在,如果要动态创建和应用filterview,可以将Apps脚本代码转换为Web App,并将redirect用户转换为动态创建的URL。

换句话说:与其让用户从驱动器中打开电子表格,不如让用户通过打开WebApp URL并将其重定向到正确的filterview来进行操作。

如果将WebApp部署为“用户访问应用程序”,甚至可以动态创建不同的过滤器视图,具体取决于哪个用户打开了WebApp URL。

09-20 13:35