dackdive's blog

新米webエンジニアによる技術ブログ。JavaScript(React), Salesforce, Python など

スプレッドシートのピボットテーブルで「総計を表示」しているかどうかをGASで判定する

超小ネタ。

Google スプレッドシートでピボットテーブルを作ったとき、行または列の項目ごとに「総計を表示」するかどうか選択できる。
この値を GAS で取得したい。

なんでこんなこと思ったかというと、総計を表示するかどうかで行・列数が変わるため、処理に分岐が必要だったから。

方法

PivotGroup クラスに totalsAreShown() メソッドがある のでそれを使う。

function getTotalsAreShown() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sheet = ss.getSheetByName('foo');

  const pivotTables = sheet.getPivotTables();
  const pivotTable = pivotTables[0];

  // 列の場合。行の場合は getRowGroups()
  const pivotGroups = pivotTable.getColumnGroups();

  pivotGroups.forEach(pivotGroup => {
    console.log(pivotGroup.totalsAreShown());
  })
}

SheetPivotTablePivotGroup という3つのクラスが関係しており、それぞれの関係性は下の図のとおり。

なお、 showTotals(boolean) というメソッドで ON/OFF の設定もできる。

参考リンク