1. ホーム
  2. /
  3. gas
  4. /
  5. 【GAS】スプレッドシートの指定範囲の行数を取得!getNumRows()徹底解説

【GAS】スプレッドシートの指定範囲の行数を取得!getNumRows()徹底解説

【GAS】スプレッドシートの指定範囲の行数を取得!getNumRows()徹底解説

Google Apps Script (GAS) を使ってスプレッドシートの自動化を行う際、指定した「範囲にいくつの行が含まれているか」を正確に把握することは、スクリプトの柔軟性と汎用性を高める上で不可欠です。getNumRows() メソッドは、この範囲の行数を簡単に取得し、動的なデータ処理やデータ検証を可能にする強力なツールです。

本記事では、GASのgetNumRows()の基本的な使い方から、データ範囲の動的取得、getLastRow()との違い、二次元配列との連携、データフォーマットの検証と自動修正、さらにはパフォーマンス最適化まで、具体的なコードを交えて徹底解説します。getNumRows()をマスターし、スプレッドシートの自動化スクリプトをより堅牢で効率的なものに変えましょう。

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

getNumRows() の基本的な使い方

getNumRows() は、Range オブジェクトに対して使用し、その範囲に含まれる行の総数を整数で返します。引数は必要なく、非常にシンプルに利用できます。

function getRowCount() {
  const sheet = SpreadsheetApp.getActiveSheet();
  
  // "B2:D5" の範囲を指定
  const range = sheet.getRange("B2:D5");
  
  // 範囲内の行数を取得
  const rowCount = range.getNumRows();
  
  console.log(rowCount); // 結果: 4
}

この例では、B2:D5 の範囲(B2, B3, B4, B5)が4行にわたるため、getNumRows()4 を返します。重要なのは、データが入力されているかどうかに関わらず、指定された範囲の物理的な行数を返すという点です。

getNumRows() と他のメソッドとの比較

getNumRows() は他のメソッドと組み合わせて使うことで、より柔軟な処理が可能になります。

getHeight()getLastRow() の違い

GASには、行数に関連する複数のメソッドが存在し、それぞれ異なる目的で使われます。

  • getNumRows(): 指定したRangeオブジェクトに含まれる物理的な行数を返します。データが空のセルや結合セルであっても、指定範囲の「高さ」を行数として数えます。
  • getHeight(): 指定範囲の物理的な高さをピクセル単位で返します。デザイン調整や画像配置などの際に利用されます。
  • getLastRow(): シート全体でデータが入力されている最終行の行番号を返します。データの増減に対応した処理で頻繁に用いられます。

このように、それぞれのメソッドが返す情報の種類と用途を理解し、適切に使い分けることが重要です。

getLastRow() との違い

getLastRow() は、シート全体でデータが入力されている最終行の行番号を返します。一方、getNumRows()指定した範囲の行数を返します。

この2つを組み合わせることで、1行目からデータの最終行までの範囲を動的に取得し、その総行数を数えるといった処理が可能です。

function processUntilLastRow() {
  const sheet = SpreadsheetApp.getActiveSheet();
  const lastRow = sheet.getLastRow();
  
  // 1行目から最終行までのデータ範囲を取得 (A列からC列まで)
  const dataRange = sheet.getRange(1, 1, lastRow, 3);
  
  // データ範囲全体の行数を取得
  const totalRows = dataRange.getNumRows(); // この場合、lastRowと同じ値になる
  console.log(totalRows);
}

実用的な活用方法

1. 動的なデータ範囲の行数を取得

データが日々増減するシートでは、getDataRange() と組み合わせるのが定番です。getDataRange() はデータが存在する範囲全体を自動で取得してくれるため、非常に便利です。

function getTotalDataRows() {
  const sheet = SpreadsheetApp.getActiveSheet();
  const dataRange = sheet.getDataRange();
  const rowCount = dataRange.getNumRows();
  
  console.log(`このシートのデータは全部で ${rowCount} 行あります。`);
}

2. 二次元配列と連携したループ処理

getValues() で取得した二次元配列の長さ(array.length)は、getNumRows() の結果と常に一致します。これを利用して、範囲内のデータを効率的にループ処理できます。

function loopThroughRange() {
  const sheet = SpreadsheetApp.getActiveSheet();
  const range = sheet.getRange("A1:C10");
  const values = range.getValues();
  const numRows = range.getNumRows(); // values.length と同じ

  for (let i = 0; i < numRows; i++) {
    // values[i] は各行のデータ配列
    console.log(`行 ${i + 1}: ${values[i].join(", ")}`);
  }
}

注意点とパフォーマンス

  • 範囲指定の誤り: sheet.getRange(startRow, startCol, numRows, numCols) の第3引数は「終了行番号」ではなく「取得する行数」です。間違いやすいため注意しましょう。
  • パフォーマンス: ループ処理の中で何度も getNumRows() を呼び出すと、不要なAPI呼び出しが増えてパフォーマンスが低下します。ループの前に一度だけ呼び出し、変数に結果を格納しておくのがベストプラクティスです。
  • 結合セルの扱い: getNumRows() はセルが結合されていても、物理的な行数を正確に返します。例えば、A1とA2が結合されていても、A1:A2の範囲に対しては 2 を返します。

まとめ

getNumRows() は、GASでスプレッドシートの指定範囲の行数を効率的に取得し、データ処理を自動化するための重要なメソッドです。

  • 正確な行数取得: 指定したRangeオブジェクトの物理的な行数を確実に取得。
  • 動的処理の実現: getLastRow()getDataRange()と組み合わせることで、データ範囲が変動する状況にも対応。
  • 効率的なデータ処理: getValues()で取得した二次元配列との連携により、高速なループ処理が可能。
  • データ検証: 期待される行数と実際の行数を比較し、シート構造の整合性を検証。

このメソッドを正しく理解し、適切に活用することで、スプレッドシートのデータ管理と自動化をより高度かつ効率的に実現できます。

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

セル範囲にある行の行数を取得する:getNumRows()【GAS】 | G Suite ガイド - G Suite ガイド:G Suite の導入方法や使い方を徹底解説!

セル範囲にある行の行数を取得する。 サンプルコード // 現在アクティブなスプレッドシートを取得 var ss = SpreadsheetApp.getActiveSpreadsheet(); // そのスプレッドシートにある最初のシートを取得 var sheet = ss.getSheets()[0]; // そのシートにある B2:D5 のセル範囲を取得 var range = sheet.getRange(“B2:D5”); // そのセル範囲にある行の行数を取得しログに出力 Logger.log(range.getNumRows()); var ss = SpreadsheetApp.getActiveSpreadsheet(); // そのスプレッドシートにある最初のシートを取得 var sheet = ss.getSheets()[0]; // そのシートにある B2:D5 のセル範囲を取得 var range = sheet.getRange(“B2:D5”); // そのセル範囲にある行の行数を取得しログに出力 Logger.log(range.getNumRows()); 引数 無し。 戻り値 数値 – 取得したセル範囲の行の行数 この記事が気に入ったら いいねしよう! 最新記事をお届けします。

関連記事

【GAS】スプレッドシートの指定範囲の列数を取得!getNumColumns()徹底解説

【GAS】スプレッドシートの指定範囲の列数を取得!getNumColumns()徹底解説

Google Apps Script (GAS) を使ってスプレッドシートの自動化を行う際、指定した「範囲にいくつの列が含まれているか」を正確に把握することは、スクリプトの柔軟性と汎用性を高める上で不可欠です。getNumColumns() メソッドは、この範囲の列数を簡単に取得し、動的なデータ処理やデータ検証を可能にする強力なツールです。

本記事では、GASのgetNumColumns()の基本的な使い方から、データ範囲の動的取得、getLastColumn()との違い、データフォーマットの検証と自動修正といった実用的な応用例まで、具体的なコードを交えて徹底解説します。getNumColumns()をマスターし、スプレッドシートの自動化スクリプトをより堅牢で効率的なものに変えましょう。

【GAS】スプレッドシートの最終行を動的に取得!getLastRow()徹底解説

【GAS】スプレッドシートの最終行を動的に取得!getLastRow()徹底解説

Google Apps Script (GAS) を用いたスプレッドシートの自動化において、「データが存在する最終行」を正確に把握することは、スクリプトの柔軟性と効率性を高める上で不可欠です。getLastRow() メソッドは、データの増減に自動対応し、処理のミスを防ぐ強力なツールとなります。

本記事では、GASのgetLastRow()の基本的な使い方から、データの追加・更新、ループ処理、一括処理によるパフォーマンス最適化、さらにはエラーハンドリングといった実務的な活用例まで、具体的なコードを交えて徹底解説します。getLastRow()をマスターし、スプレッドシート作業の自動化を次のレベルへと引き上げましょう。