【GAS】スプレッドシートで行列取得まとめ、最終行列、getLastrow、getLastcol【Google Apps Script】

GAS基本メソッド
この記事は約9分で読めます。

スプレッドシートで行、列を取得する方法をまとめています。

最終行にデータを追加する応用編のサンプルデータも公開中です。

この記事で解説しているメソッド


getLastRow()
getLastColumn()
getMaxRows()
getMaxColumns()
getRow()
getRowIndex()
getColumn()
getNumRows()
getNumColumns()
getNextDataCell()

メソッド内容一覧

行位置取得 getRow()
行インデックス取得 getRowIndex()
列位置取得 getColumn()
行数取得 getNumRows()
列数取得 getNumColumns()
データ最終行位置取得 getLastRow()
データ最終列位置取得 getLastColumn()
シート最終行取得 getMaxRows()
シート最終列取得 getMaxColumns()
行列指定で取得 getNextDataCell()

スプレッドシートのデータが入っている最終行列

スポンサーリンク


データが入っている最終行を取得するには、getMaxRows()、
最終列を取得するには、getLastColumn()を使用します。

function logGetLastRow() {

  //アクティブシートを取得
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();

  //データが入っている最終行をログに出力
  Logger.log(sheet.getLastRow());

  //変数に格納も可能
  var lastCol = sheet.getLastColumn();

  //変数をログ出力
  Logger.log('データが入っている最終列:'+lastCol);

}

スプレッドシートの最終行列の取得


データが入っている、入っていないに関わらず、
スプレッドシート全体の最終行を取得するには、getMaxRows()
最終列を取得するには、getMaxColumns()を使用します。

前項のデータ範囲で使用しているメソッドの「Last」が「Max」に変わるだけでなく、
後ろに「s」が付くので気をつけてください。

「s」がないとエラーになります。

function logGetLastRow() {

  //アクティブシートを取得
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();

  //データが入っている最終行をログに出力
  Logger.log(sheet.getLastRow());

  //変数に格納も可能
  var lastCol = sheet.getLastRow();

  //変数をログ出力
  Logger.log('データが入っている最終列:'+lastCol);

}

指定の範囲内の最終行列取得


指定範囲内の最終行列取得には、範囲を指定して、
行数取得はgetNumRows()、最終行取得はgetLastRow()、
列数取得はgetNumColumns()、最終列取得はgetLastColumn()を使用します。

function logGetLastRow() {

  //アクティブシートを取得
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();

  //取得したい範囲を変数「range」に格納
  var range = sheet.getRange('A19:D');

  //行数をログに出力
  Logger.log('「A19:D」範囲の行数:'+range.getNumRows());

  //最終行をログに出力
  Logger.log('「A19:D」範囲のシート最終行:'+range.getLastRow());

  //列をログに出力
  Logger.log('「A19:D」範囲の列数:'+range.getNumColumns());

  //最終列をログに出力
  Logger.log('「A19:D」範囲のシート最終列:'+range.getLastColumn());

}

指定行の最終行取得


指定行から取得する場合は、getNextDataCell()メソッドを使用します。
getNextDataCell()メソッドで行の取得を行う場合、
上から下に向かって取得する「DOWN」、下から上に向かって取得する「UP」があります。

どちらも同じ最終行を取得しますが、途中に空白セルがあるとその手前までの値を取得するので、
連続するデータがある場合の使用が便利です。

function getNextDataCell() {

  //アクティブシートを取得
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();

  //表の開始行列(A1)から下方向に空白行の手前までを取得
  var rowRangeDown = sheet.getRange('A1').getNextDataCell(SpreadsheetApp.Direction.DOWN).getRow();
  Logger.log('「getNextDataCell」メソッドを使用した表の最終行取得:'+rowRangeDown);

  //最終行列(A1000)から上方向にデータが挿入されている位置を取得
  var rowRangeUp = sheet.getRange('A1000').getNextDataCell(SpreadsheetApp.Direction.UP).getRow();
  Logger.log('「getNextDataCell」メソッドを使用した下方向からのデータ最終行取得:'+rowRangeUp);

}

「getNextDataCell(SpreadsheetApp.Direction.DOWN).getRow()」
DOWNで下方向へのデータ検索

「getNextDataCell(SpreadsheetApp.Direction.UP).getRow()」
UPで上方向へのデータ検索

DOWNとUPは行に対してのメソッドなので、「getRow()」を使用します。

指定列の最終列取得


指定列から取得する場合も、getNextDataCell()メソッドを使用します。
getNextDataCell()メソッドで列の取得を行う場合、
左から右に向かって取得する「NEXT」、右からから左に向かって取得する「PREVIOUS」があります。

どちらも最終列を取得しますが、途中に空白セルがあるとその手前までの値を取得するので、
行と時と同じく連続するデータがある場合の使用が便利です。

スポンサーリンク
function getNextDataCell() {

  //アクティブシート(【Copori】GASで行列取得サンプル)の「シート2」を取得
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('シート2');

  //表の開始行列(A1)から右方向に空白行の手前までを取得
  var colRangeNext = sheet.getRange('A1').getNextDataCell(SpreadsheetApp.Direction.NEXT).getColumn();
  Logger.log('「getNextDataCell」メソッドを使用した右方向への最終列取得:'+colRangeNext);

  //データ最終列(Z1)から上方向にデータが挿入されている位置を取得
  var colRangePrevious = sheet.getRange('Z1').getNextDataCell(SpreadsheetApp.Direction.PREVIOUS).getColumn();
  Logger.log('「getNextDataCell」メソッドを使用した左方向へのデータ最終列取得:'+colRangePrevious);

}

「getNextDataCell(SpreadsheetApp.Direction.NEXT).getColumn()」
NEXTで右方向へのデータ検索

「getNextDataCell(SpreadsheetApp.Direction.PREVIOUS).getColumn()」
PREVIOUSで左方向へのデータ検索

NEXTとPREVIOUSは列に対してのメソッドなので、「getColumn()」を使用します。

行列取得と最終行にデータを追加するサンプルデータ

行列取得と、最終行にデータを追加するサンプルデータはこちらからダウンロードできます。
【Copori】GASで行列取得サンプル

サンプルデータ使用方法

1、サンプルシートを開いてコピーしてください

3、メニューから「拡張機能」⇨「Apps Script」を開きます
※複数アカウントでログインしているとエラーで開けないので注意してください

4、GASの実行をして確認してみてください5、→青枠内のオリジナル関数は作成してfunction名で呼び出せます。
このサンプルコードでは、ログで実行結果を確認できるようになっています。

5、「左の一覧表をシート2の最終行にコピー挿入」のチェックをすると、
シート2にデータが追加され、チェックが外れます。

最終行に追加するGASはこちらで解説しています。
【GAS】スプレッドシートの最終行に追加、コピー、自動追加する方法まとめ【Google Apps Script】

6、シート2の初期化する時は、「シート2の初期化」のチェックボックスをチェックしてください。
チェックすると、シート2が初期化され初期化チェックが外れます。

最終行にデータを挿入する

最終行にデータを挿入、コピーする方法はこちらの記事で解説しています。
【GAS】スプレッドシートの最終行に追加、コピー、自動追加する方法まとめ【Google Apps Script】

また、簡単な「タスク管理シート」を使って、データ最終行の挿入を解説している記事もあります。
【GAS】スプレッドシートを活用したタスク管理シート配布、進捗管理サンプルコード【Google Apps Script】

このサイトではサンプルコードやサンプルデータを公開して、
初心者の方でもGASが使いこなせるように解説しています。

わかりにくいところや、ご質問等ありましたら。
お問い合わせよりお願いいたします。

ありがとうございました。

スポンサーリンク

コメント

タイトルとURLをコピーしました