こんにちは、ばばーるです。
前回のおさらい
前回はスプレッドシートのシートにアクセスする方法をご紹介しました。
- スクリプトはスプレッドシートからも立ち上げることができる
- getActive()、getActiveSpreadSheet()でスプレッドシートにアクセスできる
今回はスプレッドシートの指定されたセルの範囲にアクセスする方法をご紹介します。
getRangeでセルの範囲を取得する
getRange(): 指定されたセルの範囲を返します。

あれ?
.getRangeって入力したら、4つくらい出てくるんだけど…


4通りの方法があるんだよ。
使用用途に合ったものを使うといいよ。

まじか…ちょっと面倒くさいな…。
getRange(Integer row, Integer column): 指定された座標のセル範囲を返します。Integerは整数という意味です。例えば、getRange()getValues()を使うとセルの値を出力します。
以下のスクリプトではgetRange(1, 1)と入力されているので、1行、1列の値を出力します。
function myFunction() {
const ss = SpreadsheetApp.getActiveSheet();
const values = ss.getRange(1, 1).getValues();
Logger.log(values);
}
スプレッドシートには以下の様にA1~C3までの値が入っているので、

1行、1列の値のA1を出力します。


C1を出力したい場合は、getRange(1, 3)を使えばいいんだね?

そうだよ。

(思ったより簡単かも…)
getRange(Integer row, Integer column, Integer numRows): 指定された座標のセルから指定された行数の範囲を返します。(numRowsはnumber of Rowsという意味です。)例えば、先ほどのgetRange(1, 1)をgetRange(1, 1, 3)と変更すると、範囲A1~A3のセルの値を出力します。
function myFunction() {
const ss = SpreadsheetApp.getActiveSheet();
const values = ss.getRange(1, 1, 3).getValues();
Logger.log(values);
}

getRange(Integer row, Integer column, Integer numRows, Integer numColmuns): 指定された行数と列数で、指定された座標のからのセル範囲を返します。先ほどの、getRange(1, 1, 3)をgetRange(1, 1, 3, 2)とすると範囲A1~B3のセルの値を出力します。
function myFunction() {
const ss = SpreadsheetApp.getActiveSheet();
const values = ss.getRange(1, 1, 3, 2).getValues();
Logger.log(values);
}


ちょっと混乱してきた。
行?列?行数?
え?

ちょっと落ち着いて。
(行、列、行、列)ってことだけ覚えておけば簡単だから。
getRange(行、列、行数、列数)の順番さえ覚えておけば、
・(行、列 が範囲の開始セルなので、(1、1 は1行1列目のA1セルから、(3、2 は3行2列目のB3セルから範囲開始となります。

・行数、列数)は行数です。入力された数字の分だけのデータを取得します。例えば、getRange(1, 1, 3, 2)と入力した場合、以下の範囲のセルを取得します。


少し分かりやすくなった気がする。
行、列、行、列〜♪
getRange(String a1Notation): A1とかA1:C3とかスプレッドシートの表記で指定された範囲を返します。例えば、’A1:C3’をgetRangeに代入すると、セルA1~C3の値を返します。
function myFunction() {
const ss = SpreadsheetApp.getActiveSheet();
const values = ss.getRange('A1:C3').getValues();
Logger.log(values);
}

元々のスプレッドシートはこちら

シート2に以下の様な値が入っている場合、

getRange()の中にシート名と範囲を代入すると、シート2のA1~C3のセルの値を返します。
function myFunction() {
const ss = SpreadsheetApp.getActiveSheet();
const values = ss.getRange('シート2!A1:C3').getValues();
Logger.log(values);
}


最後のgetRangeが一番分かりやすい!
これさえあれば使えばいいんじゃない?

まあ、分かりやすいけど
指定範囲がプログラム回す度に更新される場合は、数字を代入する方が便利かも。

???(なんか難しいこと言ってきた)
まとめ
指定されたセルの範囲にアクセスする方法の4つをご紹介しました。
- getRange(Integer row, Integer column): 指定のセルを返す。
- getRange(Integer row, Integer column, Integer numRows): 指定のセルから指定した行数のセルの範囲を返す。
- getRange(Integer row, Integer column, Integer numRows, Integer numColumns): 指定のセルから指定した行数と列数のセルの範囲を返す。
- getRange(String a1Notation): A1とかA1:C3のスプレッドシートの表記で指定された範囲を返します。
GASが「指定範囲がプログラム回す度に更新される場合は、数字を代入する方が便利かも」と言っていたので、次回はfor文でセルの値を取得する方法をご紹介します。
コメント
[…] Google Apps Script スプレッドシートの指定されたセルの範囲にアクセスする方… […]
[…] Google Apps Script スプレッドシートの指定されたセルの範囲にアクセスする方… […]