You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Google Apps Script对数据透视表Grand Total列降序排序并修改表格颜色

Google Apps Script 数据透视表优化:排序与样式调整

针对现有脚本无法实现的两个需求,以下是修改方案及完整代码:

一、按Grand Total列降序排序

通过对最外层行分组(ProductID)设置排序规则,关联数据透视值的总计结果实现降序:

  • 对创建的rowGroup1调用setSortOrder指定降序
  • 用setValueSortReference绑定之前定义的valueGroup(即SUM(QtyAvailable)的总计值)

二、修改默认灰色样式

数据透视表的灰色是默认交替行样式,先关闭该样式,再自定义背景色:

  • 调用setAlternatingRowStyle(false)关闭默认交替行
  • 获取数据透视表所在范围,设置自定义背景色(示例用白色,可自行调整色值)

修改后的完整脚本

function createPivotTable2() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var auctionSheet = ss.getSheetByName("Auctions");
  var pivotSheet = ss.getSheetByName("Pivot");
  var mappingSheet = ss.getSheetByName("Mapping");
  
  var range = auctionSheet.getRange("A:P");

  var startValue = mappingSheet.getRange("B2").getValue();
  var endValue = mappingSheet.getRange("C2").getValue();
  
  var range2 = auctionSheet.getRange("E:E");
  var values = range2.getValues();
  
  var uniqueValues = new Set();
  for (var i = 0; i < values.length; i++) {
    var value = values[i][0];
    if (value >= startValue && value <= endValue) {
      uniqueValues.add(value);
    }
  }
  
  var outputValues = [...uniqueValues];
  outputValues.sort();
  
  var pivotTable = pivotSheet.getRange("A1").createPivotTable(range);
  
  var rowGroup1 = pivotTable.addRowGroup(2); // ProductID
  var rowGroup2 = pivotTable.addRowGroup(4); // productname
  var rowGroup3 = pivotTable.addRowGroup(12); // Prod_Category
  var columnGroup = pivotTable.addColumnGroup(13); // ConditionName
  var valueGroup = pivotTable.addPivotValue(9, SpreadsheetApp.PivotTableSummarizeFunction.SUM); // QtyAvailable

  rowGroup2.showTotals(false); // Disable "Show totals" for productname field
  rowGroup3.showTotals(false); // Disable "Show totals" for Prod_Category field

  pivotTable.addFilter(5, SpreadsheetApp.newFilterCriteria().setVisibleValues(outputValues).build());

  // 新增:按Grand Total(总计)列降序排序
  rowGroup1.setSortOrder(SpreadsheetApp.PivotTableSortOrder.DESCENDING)
           .setValueSortReference(valueGroup);

  // 新增:修改数据透视表默认灰色样式
  pivotTable.setAlternatingRowStyle(false); // 关闭默认交替行灰色
  var pivotRange = pivotSheet.getDataRange();
  pivotRange.setBackground("#ffffff"); // 设置整体背景为白色(可替换为你需要的色值)
  // 可选:设置表头背景色
  var headerRange = pivotSheet.getRange(1, 1, 1, pivotRange.getLastColumn());
  headerRange.setBackground("#f5f5f5");
}

内容的提问来源于stack exchange,提问作者yael

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 11:00:47