【GAS】スプレッドシートのセル範囲取得機能まとめ【サンプルソース付】

快速ワーク
スポンサーリンク

GAS開発者向けにスプレッドシートのセル範囲取得機能をすべてまとめました。

セルのデータや書式を扱う場合、セルの範囲を取得して何かをする場面はたくさんあるので、最も基礎的な機能と言っても過言ではありません。

セル範囲取得の方法はいろいろあります。行と列を指定したり、A1形式で指定したり、セル単体でなく、範囲リストで複数セルをまとめて設定、などなど。

基礎を掴んで、いろいろな処理に応用してもらえればと思います。

セル範囲取得に関するメソッドをすべて載せてます。少しでも参考になれば幸いです。


Google Apps Script スプレッドシート 基礎 リファレンス

当ページは、GAS公式リファレンスを元にスプレッドシートの機能毎にまとめた基礎的な内容となっております。

若干、文言がおかしい可能性がありますが、あらかじめご了承ください。

 

GAS基本メソッドまとめ一覧はコチラ↓↓↓です。スプレッドシートの基本的な機能をまとめてますので、ぜひご活用ください。

【GAS】スプレッドシート基本メソッドまとめ一覧【初心者入門】
GAS開発者向けにスプレッドシートの基本的なメソッドを一覧にまとめました。各機能ごとのクラス、メソッドごとのサンプルソース付ページへリンクする一覧です。初心者にとって、スプレッドシートの基本的な操作・機能単位のメソッドを知...

 

まずは実際に動かしてみることをオススメします。マクロの登録方法は以下を参照いただければと思います。

【GAS】Googleスプレッドシートでマクロの使い方入門【動画付】
Googleの「Google Apps Script」通称GAS。GoogleマップやGメールなど、いろんなGoogle関連のサービスと自由に連携できたり、独自のWebアプリを開発することもできる、いろんな可能性を秘めたワクワクの...

 

GASの本はまだまだ少ないですね。基礎レベルであれば、以下の参考書が初心者にはベストの本です。

基本的な仕様やよく使われる機能の設定方法がまとまっています。

※JavaScriptの知識が既にある程度ある人にとっては冗長かもしれません。


セル範囲クラス[Range]のセル取得

セル範囲のセル取得とセル拡張取得メソッドです。

セル取得[getCell(行, 列)]

getCell(row, column)
範囲内の特定のセルを返します。

function getCellSample() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheets()[0];

  var range = sheet.getRange("B2:D4");

  // ここの行と列は、このコードのgetCell(1,1)の範囲に相対的であり、
  // B2のセルを返します
  var cell = range.getCell(1, 1);
  Logger.log(cell.getValue());
}
Parameters
名前タイプ説明
rowInteger範囲に対するセルの行。
columnInteger範囲に対するセルの列。

Return
Range - 指定された座標の単一のセルを含む範囲。

参照:Google Apps Script | REFERENCE | SpreadSheet | Class Range | Methods | getCell(row, column)

セル拡張取得[getNextDataCell(方向)]

getNextDataCell(direction)
範囲の最初の列と行のセルから開始し、指定された方向の次のセルを返します。これは、データが含まれる連続したセル範囲の端、またはスプレッドシートの端のセルです。これは、エディターでCtrl + [矢印キー]を入力するのと同じです。

function getNextDataCellSample() {
  // アクティブなスプレッドシートが空白であると仮定します。
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheets()[0];

  var range = sheet.getRange("C3:E5");
  //ログ「C1」
  Logger.log(range.getNextDataCell(SpreadsheetApp.Direction.UP).getA1Notation());
}
Parameters
NameTypeDescription
directionDirection次のデータ領域のエッジセルを見つける方向。

Return
Range - データ領域の端のセルまたはスプレッドシートの端のセル。

参照:Google Apps Script | REFERENCE | SpreadSheet | Class Range | Methods | getNextDataCell(direction)


シートクラス[Sheet]のセル範囲取得

シートのセル範囲取得メソッドです。

セル範囲取得1[getRange(行, 列)]

getRange(row, column)
指定された座標の左上のセルの範囲を返します。

function getRange1Sample() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheets()[0];
  // 引数を2つだけ渡すと、単一のセルを持つ「範囲」が返されます。
  var range = sheet.getRange(1, 1);
  var values = range.getValues();
  Logger.log(values[0][0]);
}
Parameters
名前タイプ説明
rowInteger返すセルの行インデックス。行の索引付けは1から始まります。
columnInteger返すセルの列インデックス。列の索引付けは1から始まります。

Return
Range - このセルのみを含む範囲。

参照:Google Apps Script | REFERENCE | SpreadSheet | Class Sheet | Methods | getRange(row, column)

セル範囲取得2[getRange(行, 列, 行数)]

getRange(row, column, numRows)
指定された座標の左上のセルと指定された行数の範囲を返します。

function getRange2Sample() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheets()[0];
  // "numRows"引数を使用した場合は、1列のデータのみが返されます。
  var range = sheet.getRange(1, 1, 3);
  var values = range.getValues();
  // 最初の列から1行目から3つの値を出力します。
  for (var row in values) {
    for (var col in values[row]) {
      Logger.log(values[row][col]);
    }
  }
}
Parameters
名前タイプ説明
rowInteger範囲の開始行インデックス。行の索引付けは1から始まります。
columnInteger範囲の開始列インデックス。列の索引付けは1から始まります。
numRowsInteger返す行数。

Return
Range - 指定された行数を持つ単一列のデータを含む範囲。

参照:Google Apps Script | REFERENCE | SpreadSheet | Class Sheet | Methods | getRange(row, column, numRows)

セル範囲取得3[getRange(行, 列, 行数, 列数)]

getRange(row, column, numRows, numColumns)
指定された行数と列数で、指定された座標にある左上のセルの範囲を返します。

function getRange3Sample() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheets()[0];
  var range = sheet.getRange(1, 1, 3, 3);
  var values = range.getValues();
  // 3×3ボックスから値を印刷します。
  for (var row in values) {
    for (var col in values[row]) {
      Logger.log(values[row][col]);
    }
  }
}
Parameters
名前タイプ説明
rowInteger範囲の開始行インデックス。行の索引付けは1から始まります。
columnInteger範囲の開始列インデックス。列の索引付けは1から始まります。
numRowsInteger返す行数です。
numColumnsInteger返す列数です。

Return
Range - 指定された区域に対応する範囲。

参照:Google Apps Script | REFERENCE | SpreadSheet | Class Sheet | Methods | getRange(row, column, numRows, numColumns)

セル範囲取得4[getRange(A1形式)]

getRange(a1Notation)
A1表記またはR1C1表記で指定された範囲を返します。

function getRange4Sample() {
  // "Invoices"というタイトルのシート上でA1:D4の範囲を取得する
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var range = ss.getRange("Invoices!A1:D4");
  var values = range.getValues();
  for (var row in values) {
    for (var col in values[row]) {
      Logger.log(values[row][col]);
    }
  }
  // 最初のシートのセルA1を取得
  var sheet = ss.getSheets()[0];
  var cell = sheet.getRange("A1");
  Logger.log(cell.getValue());
}
Parameters
名前タイプ説明
a1NotationStringA1表記またはR1C1表記で指定されている、返す範囲。

Return
Range - 指定された場所の範囲。

参照:Google Apps Script | REFERENCE | SpreadSheet | Class Sheet | Methods | getRange(a1Notation)

セル範囲リスト取得[getRangeList(A1形式)]

getRangeList(a1Notations)
RangeListA1表記またはR1C1表記の空でないリストで指定された同じシート内の範囲を表すコレクションを返します。

function getRangeList1Sample() {
  var sheet = SpreadsheetApp.getActiveSheet(); // アクティブシート
  var rangeList  = sheet.getRangeList(['A1', 'B1', 'C1', 'D1', 'E1', 'F1']);
  // 対象セル範囲リストのフォント色を赤にする
  rangeList.setFontColor('#ff0000');
}
function getRangeList2Sample() {
  var sheet = SpreadsheetApp.getActiveSheet(); // アクティブシート
  var data = sheet.getRange("B:B").getDisplayValues();
  var range = [];
  // B列から値が0のセルを配列に追加する
  data.forEach(
    function(i, j){
      if (i[0] == "0") range.push("B"+(j+1));
    }
  );
  if (range.length != 0) {
    // 対象セルリストをクリアする
    sheet.getRangeList(range).clearContent();
  }
}
Parameters
名前タイプ説明
a1NotationsString[]A1表記またはR1C1表記で指定されている、返す範囲のリスト。

Return
Range - 指定された場所の範囲リスト。

参照:Google Apps Script | REFERENCE | SpreadSheet | Class Sheet | Methods | getRangeList(a1Notations)


最後に

GASセル範囲取得機能のまとめをご紹介させていただきました。

必要に応じて、有益な情報でさらに更新していきたいと思います。

プログラミングスキルを向上させるためには、本を読むだけでは脳にインプットされませんね。

実際に手を動かしてアウトプットしまくるのが一番の近道だと思います。

実際にサンプルソースをコピーして実行した結果がどうなるかを体験してみてください。

自分なりのアレンジを加えたり、なぜエラーになるのかを考え、何度も試行錯誤して問題を解決しまくり、着実に理解しながらスキルを向上させていきましょう。

GASはExcelVBAとはかなり違いますが、ベースとなっているJavaScriptは覚えて損はないプログラミング言語なのでショートカットキーなどと組み合わせてぜひ活用してみてください。

Googleスプレッドシート全ショートカットキー一覧はこちら↓↓↓

Googleスプレッドシートの使い方や機能がわかるショートカットキー全まとめ一覧【初心者こそ必見】
表計算ソフトとして、まだまだExcelのシェア率は高いですが、GoogleスプレッドシートにはExcelにはない超強力な関数があったり、Excelとは違って常に最新版を無料で使用できます。なにより、インターネットを使ったオンライン...

ショートカットキー一覧にもGASメソッドを載せています。どの操作からどのメソッドが呼ばれるのかイメージしてください。




コメント