1. ホーム
  2. /
  3. [GAS]
  4. /
  5. 【GAS】getDataRegion(dimension)で行・列単位のデータ範囲を正確に取得する方法

【GAS】getDataRegion(dimension)で行・列単位のデータ範囲を正確に取得する方法

【GAS】getDataRegion(dimension)で行・列単位のデータ範囲を正確に取得する方法

Google Apps Script (GAS)でgetDataRegion()を使うと連続したデータ範囲を取得できますが、引数dimensionを指定することで、その能力をさらに高めることができます。この引数を使えば、行方向または列方向に限定してデータ範囲を取得することが可能です。

この記事では、getDataRegion(dimension)を使いこなし、複雑なシートから特定のデータ列や行だけをスマートに抜き出す方法を解説します。

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

getDataRegion(dimension) の基本

getDataRegion()メソッドにSpreadsheetApp.Dimensionという特別な引数を渡すことで、データ範囲の取得方向を制御できます。

  • SpreadsheetApp.Dimension.ROWS: 指定したセルを基点に、**上下(行方向)**に連続するデータ範囲を取得します。
  • SpreadsheetApp.Dimension.COLUMNS: 指定したセルを基点に、**左右(列方向)**に連続するデータ範囲を取得します。

引数を指定しない場合は、上下左右すべての方向が対象になります。

列方向の範囲を取得する (COLUMNS)

指定したセルが含まれるの中で、データが連続している範囲を取得します。

function getColumnDataRegion() {
  const sheet = SpreadsheetApp.getActiveSheet();
  const startCell = sheet.getRange("B4");
  
  // B4セルを基点に「列方向(左右)」のデータ範囲を取得
  const columnDataRange = startCell.getDataRegion(SpreadsheetApp.Dimension.COLUMNS);
  
  // B4の左右にC4, D4までデータがあれば "B4:D4" が返る
  console.log(columnDataRange.getA1Notation());
}

行方向の範囲を取得する (ROWS)

指定したセルが含まれるの中で、データが連続している範囲を取得します。

function getRowDataRegion() {
  const sheet = SpreadsheetApp.getActiveSheet();
  const startCell = sheet.getRange("B4");

  // B4セルを基点に「行方向(上下)」のデータ範囲を取得
  const rowDataRange = startCell.getDataRegion(SpreadsheetApp.Dimension.ROWS);

  // B4の上下にB2からB10までデータがあれば "B2:B10" が返る
  console.log(rowDataRange.getA1Notation());
}

実践例:特定の項目列全体に書式を設定する

getDataRegion(SpreadsheetApp.Dimension.ROWS)は、「特定のヘッダーを持つ列のデータ部分全体」を取得するのに非常に便利です。

以下の例では、「価格」というヘッダー(例: C2セル)を見つけ、その列のデータ全体に通貨形式の書式を適用します。

function formatPriceColumn() {
  const sheet = SpreadsheetApp.getActiveSheet();
  // ここでは簡単化のためC2セルをヘッダーと仮定
  const priceHeaderCell = sheet.getRange("C2"); 

  // C2セルを基点に、行方向(上下)のデータ範囲を取得
  const priceColumnRange = priceHeaderCell.getDataRegion(SpreadsheetApp.Dimension.ROWS);

  // ヘッダーを除いたデータ本体の範囲を取得
  const priceDataRange = priceColumnRange.offset(1, 0, priceColumnRange.getNumRows() - 1);

  // 通貨形式(円)の書式を設定
  priceDataRange.setNumberFormat("'¥'#,##0");

  console.log(`${priceDataRange.getA1Notation()} に通貨書式を設定しました。`);
}

このスクリプトなら、「価格」列のデータが何行あっても、常に正しい範囲に書式を適用できます。

応用例:ガントチャートのタスク期間をハイライトする

複数のプロジェクトが縦に並んでいるようなシートで、特定のプロジェクトの期間(横方向の範囲)だけを取得してハイライトする例です。

function highlightTaskDuration() {
  const sheet = SpreadsheetApp.getActiveSheet();
  // プロジェクトBの開始セルを基点とする
  const taskStartCell = sheet.getRange("B5"); 

  // B5セルを基点に、列方向(左右)のデータ範囲を取得
  const taskDurationRange = taskStartCell.getDataRegion(SpreadsheetApp.Dimension.COLUMNS);

  // 取得した範囲の背景色を変更
  taskDurationRange.setBackground("#d9ead3"); // 薄い緑色
  
  console.log(`タスク期間 ${taskDurationRange.getA1Notation()} をハイライトしました。`);
}

まとめ

getDataRegion(dimension)を使いこなすことで、GASによるデータ範囲の取得は格段に柔軟かつ正確になります。

  • Dimension.ROWS列単位のデータを縦方向に取得。
  • Dimension.COLUMNS行単位のデータを横方向に取得。
  • 複雑なレイアウトのシートでも、必要な部分だけを動的に抜き出せる。

データ量やレイアウトの変更に強い、メンテナンス性の高いスクリプトを作成するために、ぜひこのテクニックを活用してください。

Google Apps Script 始め方 スプレッドシート 活用例
Google Apps Script 始め方 スプレッドシート 活用例 を各ショップで検索
Reading from and writing to a Range in Google Sheets using Apps Script

This tutorial will walk you through several ways to read data from and write data to your Google Sheets spreadsheet using Google Apps Script.

【getDataRangeを使いこなそう】シートデータの取得方法と実用的なサンプルコードを徹底解説! – AIと学ぶ!様々なテーマ【りんやん実験室】

- YouTube

Enjoy the videos and music you love, upload original content, and share it all with friends, family, and the world on YouTube.

Class Range | Apps Script | Google for Developers

[GAS]このセル範囲を起点として様々なセル範囲を取得する方法 -Rangeクラス-|テックアップライフ

Google Apps Script (GAS) でこのセル範囲を起点として、様々なセル範囲を取得する方法を説明します。

関連記事

【GAS】getDataRegion()で連続したデータ範囲を自動取得する方法

【GAS】getDataRegion()で連続したデータ範囲を自動取得する方法

Google Apps Script (GAS)で、データ量が日々変わるスプレッドシートを扱う際、「どうやって正確なデータ範囲を取得するか」は常に課題となります。getDataRegion()は、この課題を解決する非常にスマートなメソッドです。

この記事では、getDataRegion()の基本的な使い方から、getDataRange()との違い、そして動的なデータ処理への応用まで、分かりやすく解説します。

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

getDataRegion()とは?

getDataRegion()は、指定したRangeオブジェクト(単一セル)を基点として、空白セルで区切られた連続したデータ範囲を自動で検出して取得するメソッドです。

【GAS】getColumn()で範囲の開始列番号を取得する方法|列単位のループ処理に応用

【GAS】getColumn()で範囲の開始列番号を取得する方法|列単位のループ処理に応用

Google Apps Script (GAS)でスプレッドシートの特定のに対して処理を行いたい時、getColumn()は欠かせない基本メソッドです。このメソッドを使えば、指定した範囲がどの列から始まっているかを数値で簡単に取得できます。

この記事では、getColumn()の基本的な使い方から、列単位で処理を繰り返す実践的なループ処理まで、分かりやすく解説します。

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

getColumn()の基本的な使い方

getColumn()Rangeオブジェクトに適用するメソッドで、その範囲の一番左の列番号を返します。 スプレッドシートの列はA列を1、B列を2、C列を3…という数値で管理されており、getColumn()はこの数値を返します。