【问题标题】:Google sheet script to create filter of pivot table用于创建数据透视表过滤器的 Google 工作表脚本
【发布时间】:2021-02-12 17:51:28
【问题描述】:

我有以下脚本来创建简单的数据透视表。这是一个工作脚本。但是,我很难找到创建过滤器的示例代码。如果有人可以向我展示创建数据透视表过滤器的示例脚本,将不胜感激。

var sheetName = "Sheet1";
var pivotTableParams = {};


pivotTableParams.source = {
  sheetId: ss.getSheetByName(sheetName).getSheetId()
};

pivotTableParams.rows = [{
  sourceColumnOffset: 8,
  "showTotals": true,
  sortOrder: "ASCENDING"
}];

pivotTableParams.values = [{
  summarizeFunction: "SUM",
  sourceColumnOffset: 10 
}];

var sheet = ss.getSheetByName('Sheet2');
ss.deleteSheet(sheet);  

var pivotTableSheet = ss.insertSheet('Sheet2');
var pivotTableSheetId = pivotTableSheet.getSheetId();

var request = {
  "updateCells": {
    "rows": {
      "values": [{
        "pivotTable": pivotTableParams
      }]
    },
    "start": {
      "sheetId": pivotTableSheetId
    },
    "fields": "pivotTable"
  }
};

【问题讨论】:

  • 请注意,当前表单中的问题与 SO 无关,因为它基本上只是询问“给我看代码”。

标签: google-apps-script google-sheets-api


【解决方案1】:

文档可以使用示例。

在您的代码上下文中:

pivotTableParams.criteria = {
  8: {visibleValues: ["asdf", "fdsa"]},
  9: {visibleValues: ["sdaf", "fads"]},
  //and so on
};

上面的键 89 引用了数据透视源中的列。类似于 sourceColumnOffset 引用它们的方式。

criteria 字段记录在这里:Pivot Tables | Sheets API | Google Developers

PivotFilterCriteria 类型记录在这里:PivotFilterCriteria | Sheets API | Google Developers

根据我的调查,我相信 visibleValues 是唯一可以通过的密钥,因此据我所知无法通过排除进行过滤。

【讨论】:

    【解决方案2】:

    如果有人遇到此线程试图找到一个工作脚本示例,其中将更详细的参数传递给过滤器,这里有一个过滤器的工作示例,它删除所有空白值并默认显示所有其他值:

      // Filter blank cells  
      var condition = new Boolean();
      condition.type = "NOT_BLANK";
      pivotTableParams.criteria = { 0: {"condition": condition, "visibleByDefault": true}};
    

    在本例中,“0”是数据透视表上的列索引。

    这是来自 Google Sheets API 的文档,不幸的是,这些文档缺少示例,因此可能需要大量的试验和错误才能使事情正常进行: https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets/pivot-tables#PivotFilterCriteria

    【讨论】:

      【解决方案3】:

      如果有人尝试在 Apps 脚本中调用 Sheets API,您可以使用以下代码向您的数据透视表对象添加过滤器

        var filter1 = Sheets.newPivotFilterCriteria()
        filter1.visibleValues = ['Sí']
        var spec1 = Sheets.newPivotFilterSpec()
        spec1.filterCriteria = filter1
        spec1.columnOffsetIndex = 0
        var filter2 = Sheets.newPivotFilterCriteria()
        filter2.visibleValues = dates
        var spec2 = Sheets.newPivotFilterSpec()
        spec2.filterCriteria = filter2
        spec2.columnOffsetIndex = 10
        var filter3 = Sheets.newPivotFilterCriteria()
        filter3.visibleValues = ['Negocio']
        var spec3 = Sheets.newPivotFilterSpec()
        spec3.filterCriteria = filter3
        spec3.columnOffsetIndex = 23
        pivotTable.filterSpecs = [spec1,spec2,spec3]
      

      【讨论】:

        猜你喜欢
        • 2018-01-29
        • 2019-01-20
        • 1970-01-01
        • 2015-03-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多