Как отсортировать по значению «общий итог» в сводной таблице с помощью API Google Sheets - PullRequest
0 голосов
/ 13 июня 2018

Я использую приведенный ниже код для автоматического создания сводной таблицы, ссылаясь на идентификатор листа.Я хочу знать, как я могу отсортировать сводную таблицу, используя столбец Общая сумма.Я могу сделать это вручную, когда перехожу к электронной таблице, но я хочу сделать это автоматически.Я проверил документацию Google листов ЗДЕСЬ Но не смог понять это.Может быть, он что-то делает при создании корзины, но не уверен.

Это мой текущий рабочий код без сортировки для части значения:

      {
        "requests": [
          {
            "updateCells": {
              "rows": {
                "values": [
                  {
                    "pivotTable": {
                      "source": {
                        "sheetId": source_sheet_id,
                        "startRowIndex": 0,
                        "startColumnIndex": 0,
                        "endRowIndex": max_row_count,
                        "endColumnIndex": 3 #total columns
                      },
                      "rows": [
                        {
                          "sourceColumnOffset": code_index,
                          "showTotals": True,
                          "sortOrder": "ASCENDING",
                          "valueBucket": {
                            "buckets": [
                              {
                                "stringValue": "West"
                              }
                            ]
                          }
                        }
                      ],
                      "columns": [
                        {
                          "sourceColumnOffset": month_index,
                          "sortOrder": "ASCENDING",
                          "showTotals": True,
                          "valueBucket": {
                             "buckets": [
                              {
                                "stringValue": "Panel"
                              }
                            ]
                          },
                        }
                      ],
                      "values": [
                        {
                          "summarizeFunction": "SUM",
                          "sourceColumnOffset": counts_index
                        }
                      ],
                      "valueLayout": "HORIZONTAL"
                    }
                  }
                ]
              },
              "start": {
                "sheetId": destination_sheet_id,
                "rowIndex": 0,
                "columnIndex": 0
              },
              "fields": "pivotTable"
            }
          }
        ]
      }

Ответы [ 2 ]

0 голосов
/ 04 сентября 2018

У меня была та же проблема, и я исправил ее после долгих исследований.

Хитрость заключается в добавлении пустого ключа "valueBucket" в каждую строку, например:

    "rows": [
  {
    "sourceColumnOffset": 0,
    "showTotals": true,
    "sortOrder": "DESCENDING",
    "valueBucket": {}
  },

Затемстроки будут упорядочены по столбцу Общая сумма.

Я нашел ответ здесь: https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets#SortOrder

Он говорит: «Например, в сводной таблице с одной группой строк и двумя столбцамигрупп, группа строк может содержать до двух значений. Первое значение соответствует значению в первой группе столбцов, а второе значение соответствует значению во второй группе столбцов. Если значения не указаны, это будетуказать, что строка должна быть отсортирована в соответствии с «общим итогом» по группам столбцов . Если указано одно значение, это будет соответствовать использованию «общего» этого сегмента. »

ВВ вашем случае данные были взяты отсюда: https://developers.google.com/sheets/api/samples/pivot-tables

Проверьте этот пример листа: https://docs.google.com/spreadsheets/d/1f5s03qLAVaLfUfkyvjZtllVNz0FxAmn2jEmL9wYVGh8/edit?usp=sharing

В примере эта функция на основе вашего кода создала сводную таблицу сзначения, заказанные Гранd Общий столбец.

function makePivot() {

  var sheet = SpreadsheetApp.getActiveSpreadsheet();
  var sourceSheetId = sheet.getSheetByName("Data").getSheetId(); 

  // Create a new sheet which will contain our Pivot Table
  var pivotTableSheet = sheet.insertSheet("Pivot1");
  var pivotTableSheetId = pivotTableSheet.getSheetId();  

  var request = {    
    "updateCells": {
      "rows": {
        "values": [
          {
            "pivotTable": {
              "source": {
                "sheetId": sourceSheetId,
                "startRowIndex": 0,
                "startColumnIndex": 0,
                "endRowIndex": 20,
                "endColumnIndex": 7
              },
              "rows": [
                {
                  "sourceColumnOffset": 0,
                  "showTotals": true,
                  "sortOrder": "DESCENDING",
                  "valueBucket": {}
                },
                {
                  "sourceColumnOffset": 1,
                  "showTotals": true,
                  "sortOrder": "DESCENDING",
                  "valueBucket": {}
                }
              ],
              "columns": [
                {
                  "sourceColumnOffset": 4,
                  "sortOrder": "ASCENDING",
                  "showTotals": true}
              ],
              "values": [
                {
                  "summarizeFunction": "SUM",
                  "sourceColumnOffset": 3
                }
              ],
              "valueLayout": "HORIZONTAL"
            }
          }
        ]
      },
      "start": {
        "sheetId": pivotTableSheetId,
        "rowIndex": 2,
        "columnIndex": 0
      },
      "fields": "pivotTable"
    }
  }

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

Надеюсь, это поможет!

0 голосов
/ 13 июня 2018

Отправьте запрос POST по следующему URL-адресу (введите свой идентификатор таблицы): https://sheets.googleapis.com/v4/spreadsheets/spreadsheetId:batchUpdate

Содержит следующую полезную нагрузку (введите фактическое значение для общего номера столбца):

{
  "requests": [
    {
      "sortRange": {
        "range": {
          "sheetId": sheetId,
          "startRowIndex": 0,
          "endRowIndex": 10,
          "startColumnIndex": 0,
          "endColumnIndex": 6
        },
        "sortSpecs": [
          {
            "dimensionIndex": Index of GrandTotal Column,
            "sortOrder": "ASCENDING"
          }
        ]
      }
    }
  ]
}

См. Здесь для полной документации: https://developers.google.com/sheets/api/samples/data (самый нижний пример)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...