1. ホーム
  2. /
  3. [GAS]
  4. /
  5. GASのexpandGroupsメソッドでグループ化された行や列を展開する方法

GASのexpandGroupsメソッドでグループ化された行や列を展開する方法

GASのexpandGroupsメソッドでグループ化された行や列を展開する方法

Googleスプレッドシートの「グループ化」機能は、大量のデータを整理し、一時的に非表示にするのに非常に便利です。しかし、折りたたまれたグループを一つずつ手動で展開するのは手間がかかります。Google Apps Script (GAS) の expandGroups() メソッドを使えば、この操作を自動化し、一括でグループを展開できます。

Google Apps Script 始め方 スプレッドシート 活用例
Google Apps Script 始め方 スプレッドシート 活用例 を各ショップで検索

expandGroups()メソッドとは?

expandGroups() は、Range クラスに属するメソッドで、指定したセル範囲内に存在する、折りたたまれた全てのグループ(行または列)を展開します。

基本的な構文は非常にシンプルです。

// "A1:D10" の範囲に含まれるすべてのグループを展開
const range = sheet.getRange("A1:D10");
range.expandGroups();

このメソッドを呼び出すだけで、対象範囲内のグループがすべて表示状態になります。

expandGroups()の実践的な実装例

expandGroups() を活用した具体的なスクリプトを3つのパターンで紹介します。

1. シート全体のすべてのグループを展開する

シートに含まれるデータ全体のグループを展開する最も基本的なスクリプトです。

function expandAllGroupsInSheet() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sheet = ss.getActiveSheet();
  // データが存在するすべての範囲を取得
  const dataRange = sheet.getDataRange();
  
  // 範囲内の全グループを展開
  dataRange.expandGroups();
  
  // 変更を即時反映
  SpreadsheetApp.flush(); 
}

メニューにこの関数を登録しておけば、ワンクリックでシート内の全グループを展開できます。

2. ユーザーが選択した範囲のグループのみを展開する

特定の範囲だけグループを展開したい場合に便利なスクリプトです。

function expandSelectedGroups() {
  const sheet = SpreadsheetApp.getActiveSheet();
  const selection = sheet.getSelection();
  // 現在選択されている範囲を取得
  const activeRange = selection.getActiveRange();
  
  if (activeRange) {
    activeRange.expandGroups();
  }
}

3. トリガーを利用して自動で展開する

特定のセルの値が変更されたことをきっかけに、グループを自動で展開するスクリプトです。例えば、チェックボックスと連動させると便利です。

/**
 * onEditイベントで実行されるトリガー関数
 * @param {Object} e イベントオブジェクト
 */
function onEdit(e) {
  const sheet = e.source.getActiveSheet();
  const range = e.range;
  
  // A1セルの値がTRUEに変更された場合
  if (range.getA1Notation() === "A1" && e.value === "TRUE") {
    // "B2:F20"の範囲のグループを展開
    sheet.getRange("B2:F20").expandGroups();
  }
}

このスクリプトを設置しておくと、A1セルにチェックを入れるだけで指定範囲のグループが展開されるようになります。

expandGroups()を使用する際の注意点

  • 対象グループがない場合: 指定した範囲に展開可能なグループが存在しない場合、このメソッドは何も実行せず、エラーも発生しません。
  • 範囲指定のミス: 存在しないシートや範囲を指定しようとするとエラーが発生します。
  • エラーハンドリング: ユーザーが予期せぬ範囲を選択する可能性がある場合など、try...catch ブロックでエラーを捕捉すると、より安定したスクリプトになります。
function safeExpandGroups() {
  try {
    const sheet = SpreadsheetApp.getActiveSheet();
    const range = sheet.getRange("A1:D10"); // 対象範囲
    range.expandGroups();
  } catch (e) {
    console.error(`グループの展開に失敗しました: ${e.message}`);
    SpreadsheetApp.getUi().alert("グループの展開中にエラーが発生しました。");
  }
}

まとめ

expandGroups() メソッドを活用することで、スプレッドシートのグループ展開作業を効率化・自動化できます。

  • 一括展開: シート全体または特定の範囲のグループを一度に展開。
  • 自動化: onEdit などのトリガーと組み合わせ、特定の操作に応じて自動でグループを展開。
  • 安定性向上: try...catch によるエラー処理で、より堅牢なスクリプトを構築。

手動での繰り返し作業をGASで自動化し、スプレッドシートの操作をさらに快適にしましょう。

Google Apps Script 始め方 スプレッドシート 活用例
Google Apps Script 始め方 スプレッドシート 活用例 を各ショップで検索
Class Range | Apps Script | Google for Developers

【GAS】スプレッドシートの行列グループ化・解除・折りたたみ・展開機能まとめ【サンプルソース付】

GAS開発者向けにスプレッドシートの行列グループ化・解除・折りたたみ・展開機能をすべてまとめました。どうでもいいデータ行なんだけど削除はしたくない、ポチっと押すだけですぐ見えるようにしたい、という場面でグループ化は大いに役立ちますね。そんな

関連記事

GASのdeleteCellsメソッドでセルを削除し、行や列をシフトする方法

GASのdeleteCellsメソッドでセルを削除し、行や列をシフトする方法

Google Apps Script (GAS) を使ってスプレッドシートのデータを整理する際、単にセルの内容をクリアするだけでなく、セル自体を削除して後続のデータを詰めたい場面がよくあります。deleteCells(shiftDimension) メソッドは、まさにそのための機能を提供し、データ整理を柔軟かつ効率的に自動化します。

Google Apps Script 始め方 スプレッドシート 活用例
Google Apps Script 始め方 スプレッドシート 活用例 を各ショップで検索

deleteCells(shiftDimension)メソッドとは?

deleteCells()Range オブジェクトに属するメソッドで、指定したセル範囲を削除します。最大の特徴は、引数 shiftDimension を指定することで、削除後に後続のセルを上方向または左方向にシフト(詰める)できる点です。

GAS `getWraps()`でスプレッドシートのテキスト折り返しを一括制御!応用例と最適化

GAS `getWraps()`でスプレッドシートのテキスト折り返しを一括制御!応用例と最適化

Google Apps Script(GAS)でスプレッドシートを効率的に操作する際、セルのテキスト折り返し設定を一括で管理することは、大規模なデータセットの視認性を高め、プロフェッショナルなレポート作成において不可欠です。getWraps()メソッドは、このテキスト折り返し設定を複数のセルから一度に取得するための強力なツールです。

本記事では、GASのRange.getWraps()メソッドを徹底解説します。基本的な使い方から、データ量が多い場合のパフォーマンス最適化(キャッシュ活用)、さらには取得した情報を元にした列幅の自動調整、堅牢なスクリプト開発のためのエラー処理、そしてsetWraps()メソッドと連携した一括設定方法まで、具体的なコードを交えて分かりやすく紹介します。