Как отсортировать по «сумме затрат» в общей сумме, используя скрипт приложения - PullRequest
0 голосов
/ 26 февраля 2020

Я пытаюсь использовать скрипт приложения для генерации сводной таблицы и сортировки по сумме одного столбца в общем итоге. У меня есть три столбца в общем итоге.

function createCampaignPivotTable() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName(sheetName);
  var sheetId = sheet.getSheetId();
  // The name of the sheet containing the data you want to put in a table.
  var pivotTableParams = {};

  // var customerId = getSourceTable();
  // The source indicates the range of data you want to put in the table.
  // optional arguments: startRowIndex, startColumnIndex, endRowIndex, endColumnIndex
  pivotTableParams.source = { 
    sheetId: sheetId
  };

  // Group rows, the 'sourceColumnOffset' corresponds to the column number in the source range
  // eg: 0 to group by the first column

  pivotTableParams.columns = [
    {
    sourceColumnOffset: 4,
    sortOrder: "ASCENDING",
      "showTotals": true,
      "valueBucket": {
                          "buckets": [
                            {
                              "stringValue": "Ad Destination"
                            }
                          ]
                        }
    }
  ];

  pivotTableParams.rows = [
    {
    sourceColumnOffset: 0,
    sortOrder: "ASCENDING",
      "showTotals": true,
       "valueBucket": {
                          "buckets": [
                            {
                              "stringValue": "Customer ID"
                            }
                          ]
                        }
    },
    {
    sourceColumnOffset: 2,
    sortOrder: "DESCENDING",
      "showTotals": true,
         "valueBucket": {
           "buckets": []
           }
    }

  ];

  // Defines how a value in a pivot table should be calculated.
  pivotTableParams.values = [
    {
    summarizeFunction: "SUM",
    sourceColumnOffset: 5
    },
    {
    summarizeFunction: "SUM",
    sourceColumnOffset: 6
    },
    {
    summarizeFunction: "SUM",
    sourceColumnOffset: 7
    },
  ];

  // Create a new sheet which will contain our Pivot Table
    var pivotsheet = ss.getSheetByName('Pivot Table - Campaigns');
    if (pivotsheet){
    ss.deleteSheet(pivotsheet);}
    var pivotTableSheet = ss.insertSheet('Pivot Table - Campaigns');
    var pivotTableSheetId = pivotTableSheet.getSheetId();

  // Add Pivot Table to new sheet
  // Meaning we send an 'updateCells' request to the Sheets API
  // Specifying via 'start' the sheet where we want to place our Pivot Table
  // And in 'rows' the parameters of our Pivot Table
  var request = {
    "updateCells": {
      "rows": {
        "values": [{
          "pivotTable": pivotTableParams
        }]
      },
      "start": {
        "sheetId": pivotTableSheetId
      },
      "fields": "pivotTable"
    }
  };

  Sheets.Spreadsheets.batchUpdate({'requests': [request]}, ss.getId());
return pivotTableSheetId

Если я использую эту конфигурацию, я могу отсортировать сводную таблицу по общему итогу. Я не могу отсортировать по заданному столбцу c в общем итоге.

Например, у меня есть sum of cost, sum of action, sum of clicks в Grand Total. Как сделать так, чтобы сводная таблица сортировалась по одному из этих столбцов, а не по случайному?

...