使用 Google Apps 脚本(高级表格 API)将条件添加到筛选视图

Add Criteria to Filter View using Google Apps Script (Advanced Sheets API)

我正在尝试使用高级工作表创建过滤视图 API。我能在上面找到的所有内容都是 Python 或其他某种语言的,而且我没有那么先进,我勉强通过谷歌搜索问题!我的其余代码搜索每天添加的新选项卡,此代码的目的是在某些条件下自动在该选项卡上创建过滤器视图。

我正在使用“Sheets.Spreadsheets.batchUpdate()”方法,除了“filterSpecs[]”属性外,这段代码中的所有内容都适用于我。我先尝试了 criteria 属性,但后来发现它不再使用了?请帮忙!

              const resource = {
                requests: {
                  addFilterView: {
                    
                    filter: {
                      filterViewId: '0000000',
                      title: 'Chris Johnson',
                      range: {
                        sheetId: st1.toString(),
                        startRowIndex: 0,
                        endRowIndex: 500,
                        startColumnIndex: 0,
                        endColumnIndex: 8
                      }
                      filterSpecs: [{
                          3: {condition: {
                                  type: 'TEXT_CONTAINS',
                              values: {
                                    userEnteredValue: 'Chris Johnson'
                                    }}}
                                   }],
            }
            }}}

修改点:

  • }filterSpecs: [{ 有错误。 ,需要添加
  • filterSpecs 的元素不正确。
  • 即使不包含 filterViewId,也会添加过滤视图。但是用filterViewId的时候,可以给原来的ID。
  • 属性 of requests 是数组。

当这些点反映在你的request body中,就变成了下面的样子。

修改后的脚本:

function myFunction() {
  const spreadsheetId = "###"; // Please set your Spreadsheet ID.
  const resource = {
    "requests": [
      {
        "addFilterView": {
          "filter": {
            "filterViewId": 12345,
            "title": "Chris Johnson",
            "range": {
              "sheetId": 0,
              "startRowIndex": 0,
              "endRowIndex": 500,
              "startColumnIndex": 0,
              "endColumnIndex": 8
            },
            "filterSpecs": [
              {
                "filterCriteria": {
                  "condition": {
                    "type": "TEXT_CONTAINS",
                    "values": [
                      {
                        "userEnteredValue": "Chris Johnson"
                      }
                    ]
                  }
                },
                // "columnIndex": 0 // If you want to use the column, please use this.
              }
            ]
          }
        }
      }
    ]
  };
  Sheets.Spreadsheets.batchUpdate(resource, spreadsheetId);
}

参考: