このガイドでは、Google Sheets API を使用してスプレッドシートにピボット テーブルを作成する方法と理由について説明します。
ピボット テーブルとは
ピボット テーブルは、スプレッドシート内のデータを要約する手段です。データの集計、並べ替え、カウント、平均化を自動的に行い、その結果を新しいテーブルに表示します。ピボット テーブルは、ソース データセットに対する一種のクエリとして機能します。このソースデータはスプレッドシートの別の場所にあり、ピボット テーブルには処理されたデータのビューが表示されます。
たとえば、次の販売データセットについて考えてみましょう。
| A | B | C | D | E | F | G | |
| 1 | アイテムのカテゴリ | モデル番号 | 費用 | 数量 | 地域 | 営業担当者 | 発送日 | 
| 2 | ホイール | W-24 | $20.50 | 4 | 西 | Beth | 2016 年 3 月 1 日 | 
| 3 | ドア | D-01X | $15.00 | 2 | 南 | Amir | 2016 年 3 月 15 日 | 
| 4 | エンジン | ENG-0134 | 10,000 円 | 1 | 北 | カルメン | 2016 年 3 月 20 日 | 
| 5 | フレーム | FR-0B1 | $34.00 | 8 | 東 | ハンナ | 2016 年 3 月 12 日 | 
| 6 | パネル | P-034 | $6.00 | 4 | 北 | Devyn | 2016 年 4 月 2 日 | 
| 7 | パネル | P-052 | 11.50 ドル | 7 | 東 | エリック | 2016 年 5 月 16 日 | 
| 8 | ホイール | W-24 | $20.50 | 11 | 南 | Sheldon | 2016 年 4 月 30 日 | 
| 9 | エンジン | ENG-0161 | $330.00 | 2 | 北 | Jessie | 2016 年 7 月 2 日 | 
| 10 | ドア | D-01Y | $29.00 | 6 | 西 | Armando | 2016 年 3 月 13 日 | 
| 11 | フレーム | FR-0B1 | $34.00 | 9 | 南 | Yuliana | 2016 年 2 月 27 日 | 
| 12 | パネル | P-102 | $3.00 | 15 | 西 | カルメン | 2016 年 4 月 18 日 | 
| 13 | パネル | P-105 | $8.25 | 13 | 西 | Jessie | 2016 年 6 月 20 日 | 
| 14 | エンジン | ENG-0211 | $283.00 | 1 | 北 | Amir | 2016 年 6 月 21 日 | 
| 15 | ドア | D-01X | $15.00 | 2 | 西 | Armando | 2016 年 7 月 3 日 | 
| 16 | フレーム | FR-0B1 | $34.00 | 6 | 南 | カルメン | 7/15/2016 | 
| 17 | ホイール | W-25 | $20.00 | 8 | 南 | ハンナ | 2016 年 5 月 2 日 | 
| 18 | ホイール | W-11 | $29.00 | 13 | 東 | エリック | 2016 年 5 月 19 日 | 
| 19 | ドア | D-05 | $17.70 | 7 | 西 | Beth | 2016 年 6 月 28 日 | 
| 20 | フレーム | FR-0B1 | $34.00 | 8 | 北 | Sheldon | 2016 年 3 月 30 日 | 
ピボット テーブルを使用して、各地域で販売された各モデル番号の数を示すレポートを作成できます。

このピボット テーブルの生成に使用されたソースコードについては、下記の例をご覧ください。
ピボット テーブルをスプレッドシートに配置すると、ユーザーはスプレッドシートの UI を使用して、集計の構造と詳細をインタラクティブに変更できます。
ピボット テーブルの操作
ピボット テーブルの定義は、シートの 1 つのセルに関連付けられます。レンダリングされた外観は高さと幅の両方に多くのセルがありますが、プログラム的には 1 つのセル座標に配置されます。このセルは、レンダリングされたピボット テーブルの左上隅になり、その水平方向と垂直方向の範囲は定義によって決まります。
ピボット テーブルを追加する
ピボット テーブルを追加するには、updateCells リクエストを指定して batchUpdate メソッドを使用します。このリクエストを使用して、次のように PivotTable の定義をセルのコンテンツとして指定します。
{
  "updateCells": {
    "rows": {
      "values": [
        {
          "pivotTable": "MyPivotTable"
        }
      ],
      "start": {
        "sheetId": "sheetId",
        "rowIndex": 0,
        "columnIndex": 0
      },
      "fields": "pivotTable"
    }
  }
}
これにより、MyPivotTable で記述されたピボット テーブルが指定されたシートに配置され、左上隅がセル A1 になります。(ピボット テーブルの高さと幅は動的です。原点のみを指定します)。
PivotTable 型では、次のものを指定できます。
- ソースデータ範囲
 - ピボット テーブルの行を構成するデータを含む 1 つ以上のフィールド
 - ピボット テーブルの列を形成するデータを含む 1 つ以上のフィールド
 - フィルタリングと集計の条件
 - ピボット テーブルのレイアウト
 
ピボット テーブルの変更と削除
ピボット テーブルの変更や削除を明示的にリクエストすることはありません。代わりに、異なるセル内容で updateCells リクエストを使用します。
- ピボット テーブルを変更するには、変更した PivotTable 定義を作成し、新しいピボット テーブルを追加するのと同様に、それを使用してセルを更新します。
 - ピボット テーブルを削除するには、セルを空の値で更新します。例については、ピボット テーブルを削除するのサンプルをご覧ください。
 
ユースケース
ピボット テーブルは、統計分析、ERP アプリケーション、財務報告など、幅広い分野でさまざまな用途に使用されています。従来のピボット テーブルのユースケースには、次のようなものがあります。
- 地域別、四半期別の総売上高
 - 役職と地域別の平均給与
 - サービス別、時間帯別のインシデント数
 
ピボット テーブルの用途は多岐にわたり、プログラムで生成できる機能は強力です。インタラクティブなデータ探索をサポートしつつ、特定の状況に合わせて調整されたピボット テーブルを生成できます。たとえば、次のような場合です。
- 過去 24 時間のインシデント データを調べる
 - 選択したアカウントに対応する集計データを表示または分析する
 - 現在のユーザーが属するテリトリーの販売データを調べる
 
例
この例では、データセットからピボット テーブルを作成し、このページの冒頭で示した「地域別のモデル番号」レポートを生成します。その他の例については、ピボット テーブルのサンプルのページをご覧ください。