GAS開発者向けにスプレッドシートのセル範囲取得機能をすべてまとめました。
セルのデータや書式を扱う場合、セルの範囲を取得して何かをする場面はたくさんあるので、最も基礎的な機能と言っても過言ではありません。
セル範囲取得の方法はいろいろあります。行と列を指定したり、A1形式で指定したり、セル単体でなく、範囲リストで複数セルをまとめて設定、などなど。
基礎を掴んで、いろいろな処理に応用してもらえればと思います。
セル範囲取得に関するメソッドをすべて載せてます。少しでも参考になれば幸いです。
Google Apps Script スプレッドシート 基礎 リファレンス
当ページは、GAS公式リファレンスを元にスプレッドシートの機能毎にまとめた基礎的な内容となっております。
若干、文言がおかしい可能性がありますが、あらかじめご了承ください。
GAS基本メソッドまとめ一覧はコチラ↓↓↓です。スプレッドシートの基本的な機能をまとめてますので、ぜひご活用ください。
まずは実際に動かしてみることをオススメします。マクロの登録方法は以下を参照いただければと思います。
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());
}
名前 | タイプ | 説明 |
---|---|---|
row | Integer | 範囲に対するセルの行。 |
column | Integer | 範囲に対するセルの列。 |
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());
}
Name | Type | Description |
---|---|---|
direction | Direction | 次のデータ領域のエッジセルを見つける方向。 |
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]);
}
名前 | タイプ | 説明 |
---|---|---|
row | Integer | 返すセルの行インデックス。行の索引付けは1から始まります。 |
column | Integer | 返すセルの列インデックス。列の索引付けは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]);
}
}
}
名前 | タイプ | 説明 |
---|---|---|
row | Integer | 範囲の開始行インデックス。行の索引付けは1から始まります。 |
column | Integer | 範囲の開始列インデックス。列の索引付けは1から始まります。 |
numRows | Integer | 返す行数。 |
Return
Range - 指定された行数を持つ単一列のデータを含む範囲。
セル範囲取得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]);
}
}
}
名前 | タイプ | 説明 |
---|---|---|
row | Integer | 範囲の開始行インデックス。行の索引付けは1から始まります。 |
column | Integer | 範囲の開始列インデックス。列の索引付けは1から始まります。 |
numRows | Integer | 返す行数です。 |
numColumns | Integer | 返す列数です。 |
Return
Range - 指定された区域に対応する範囲。
セル範囲取得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());
}
名前 | タイプ | 説明 |
---|---|---|
a1Notation | String | A1表記または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();
}
}
名前 | タイプ | 説明 |
---|---|---|
a1Notations | String[] | A1表記またはR1C1表記で指定されている、返す範囲のリスト。 |
Return
Range - 指定された場所の範囲リスト。
参照:Google Apps Script | REFERENCE | SpreadSheet | Class Sheet | Methods | getRangeList(a1Notations)
最後に
GASセル範囲取得機能のまとめをご紹介させていただきました。
必要に応じて、有益な情報でさらに更新していきたいと思います。
プログラミングスキルを向上させるためには、本を読むだけでは脳にインプットされませんね。
実際に手を動かしてアウトプットしまくるのが一番の近道だと思います。
実際にサンプルソースをコピーして実行した結果がどうなるかを体験してみてください。
自分なりのアレンジを加えたり、なぜエラーになるのかを考え、何度も試行錯誤して問題を解決しまくり、着実に理解しながらスキルを向上させていきましょう。
GASはExcelVBAとはかなり違いますが、ベースとなっているJavaScriptは覚えて損はないプログラミング言語なのでショートカットキーなどと組み合わせてぜひ活用してみてください。
Googleスプレッドシート全ショートカットキー一覧はこちら↓↓↓
ショートカットキー一覧にもGASメソッドを載せています。どの操作からどのメソッドが呼ばれるのかイメージしてください。
コメント