初心者必見!GASでのピボットテーブル作成と更新方法

GASでピボットテーブルを作成したいんだけど、どうやって始めたらいいのかわからなくて…
猫男
猫男
catman
catman
任せてくれ。catmanがGASを使ったピボットテーブルの作成と更新方法を伝授しよう!

GASでのピボットテーブル作成の基本

ピボットテーブルとは、

表形式のデータを集計・分類・分析するための機能

だったよな。

スプレッドシートやExcel で、複雑なデータを「簡単に要約して見やすくする」ための強力なツールさ。

 

ってことで、まずは、GAS(Google Apps Script)を使ってどのようにピボットテーブルを作成するのか確認しよう。

スプレッドシートを取得する

ピボットテーブルを作成するためには、まずGoogleスプレッドシートを取得する必要がある。


function createPivotTable() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
}

このコードでは、SpreadsheetApp.getActiveSpreadsheet().getActiveSheet()を使って現在アクティブなシートを取得している。

ピボットテーブルの範囲を設定する

次に、ピボットテーブルをどこに作成するかを指定する。


function createPivotTable() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  const range = sheet.getRange('A1:H10'); // データの範囲
}

ここでは、A1からH10までの範囲を指定している。この範囲に含まれるデータを元にピボットテーブルを作成する。

ピボットテーブルを作成する

ピボットテーブルを作成するために、次のようにコードを追加する。


function createPivotTable() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  const range = sheet.getRange('A1:H10');
  const pivotRange = sheet.getRange('J1'); // ピボットテーブルの開始位置

  const pivotTable = pivotRange.createPivotTable(range);
  pivotTable.addRowGroup(1); // 1列目を行グループに追加
  pivotTable.addColumnGroup(2); // 2列目を列グループに追加
  pivotTable.addPivotValue(3, SpreadsheetApp.PivotTableSummarizeFunction.SUM); // 3列目のデータを合計
}

pivotRange.createPivotTable(range): 指定したデータ範囲からピボットテーブルを作成
addRowGroup(columnIndex): 指定した列を行グループに追加
addColumnGroup(columnIndex): 指定した列を列グループに追加
addPivotValue(columnIndex, function): 指定した列のデータを関数を用いて集計

 

たとえば、元データが次のようなものだとしよう。

gas ピボットテーブル

ここでさっきの関数を実行すると、J列以降に次のような表が出現するはずだ。

gas ピボットテーブル

ピボットテーブルの範囲や位置を簡単に指定できるんだね!
猫男
猫男

GASでのピボットテーブル更新方法

作成したピボットテーブルを更新するための方法も知っておこう。特にデータが変更されたときに役立つぞ。

 

まずはデータの範囲を再設定してから更新しよう。


function updatePivotTable() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  const range = sheet.getRange('A1:H15'); // 新しいデータ範囲
  const pivotRange = sheet.getRange('J1');

  const pivotTable = pivotRange.getPivotTable();
  pivotTable.setDataRange(range); // 新しい範囲にセット
}

ここでは、範囲をA1からH15に変更している。pivotTable.setDataRange(range)を使って新しい範囲を設定できるはずだ。

catman
catman
これでピボットテーブルを作成して更新する基本はばっちりだ。応用してどんどん活用していこう!

練習問題

データ範囲をA1からF20に変更し、G1にピボットテーブルを作成して、3列目を行グループ、4列目を列グループ、5列目のデータを平均で集計するスクリプトを書いてください。

 

 

解答・解説


function practicePivotTable() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  const range = sheet.getRange('A1:F20'); // 新しいデータ範囲
  const pivotRange = sheet.getRange('G1'); // ピボットテーブルを開始する位置

  const pivotTable = pivotRange.createPivotTable(range);
  pivotTable.addRowGroup(3); // 3列目を行グループに追加
  pivotTable.addColumnGroup(4); // 4列目を列グループに追加
  pivotTable.addPivotValue(5, SpreadsheetApp.PivotTableSummarizeFunction.AVERAGE); // 5列目を平均で集計
}

ここでは、getRange(‘A1:F20’)で新しい範囲を指定し、createPivotTable()でピボットテーブルを作成。

3列目と4列目をそれぞれ行グループと列グループに設定し、5列目はAVERAGE関数で集計している。