Google Apps Scriptでスプレッドシートを操作するには、以下のような4つの手順が必要です。
- ワークブックを指定
- ワークシートを指定
- セル範囲を指定
- 処理
どのスプレッドシートを操作するか指定します。
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var spreadsheet = SpreadsheetApp.openById(id);
var spreadsheet = SpreadsheetApp.openByUrl(url);
どのワークシートを操作するか指定します。
var sheet = spreadsheet.getActiveSheet();
var sheet = spreadsheet.getSheetByName(name);
var sheet = spreadsheet.getSheets()[N-1];
どのセル範囲を操作するか指定します。
var range = sheet.getRange(a1Notation);
var range = sheet.getRange(row, column [, numrows [, numcolumns]]);
今回の記事では、ステップ3にあたるセル範囲を指定するgetRange
メソッドの使い方について紹介します。
getRange
メソッドは、ステップ4の処理を行うために欠かせないので、しっかり使い方をマスターしてください!
function myFunction() {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spreadsheet.getActiveSheet();
}
また、以降の章では、変数sheet
に、GASでスプレッドシートを操作するSpreadsheetApp.Spreadsheet
クラスを格納したものとして進めていきます。
// 単一セル
sheet.getRange("B1"); // B1
sheet.getRange(1, 2); // B1
// 複数セル
sheet.getRange("B1:D3"); // B1:D3
sheet.getRange(1, 2, 4); // B1:B4
sheet.getRange(1, 2, 3, 3); // B1:D3
getRangeメソッド
セル範囲を指定するSpreadsheetApp.Spreadsheet
のgetRange
メソッドには、2つの構文が存在します。
// 1.A1表記またはR1C1表記で指定する
var range = sheet.getRange(a1Notation)
// 2.数値で範囲を指定する
var range = sheet.getRange(row, column [, numrows [, numcolumns]]);
メソッド | 戻り値の型 | 説明 |
---|---|---|
Sheet.getRange(a1Notation) |
Range |
A1表記またはR1C1表記で指定したセル範囲のRange オブジェクトを返す |
Sheet.getRange(row, column [, numrows [, numcolumns]]) |
Range |
数値で指定した範囲のRange オブジェクトを返す |
A1表記またはR1C1表記で指定する
var range = sheet.getRange(a1Notation)
パラメータ | 型 | 説明 |
---|---|---|
a1Notation |
String |
A1表記またはR1C1表記でセルの位置を指定する |
C2
、C2:D3セルはC2:D3
R2C3
、C2:D3セルはR2C3:R3C4
基本的にはA1表記を使用したほうが直感的に分かりやすいですが、変数を絡めて使うときにはR1C1表記が役立ちます。覚えておいて損はないです。
サンプルコード
function myFunction() {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spreadsheet.getActiveSheet();
// 単一セルを指定
var range1 = sheet.getRange("B1");
Logger.log(range1.getA1Notation()); // B1
// 複数セルを指定
var range2 = sheet.getRange("B1:C3");
Logger.log(range2.getA1Notation()); // B1:C3
}
メソッド | 戻り値の型 | 説明 |
---|---|---|
range.getA1Notation() |
string |
選択しているセルの範囲をA1表記で返す |
A1表記の小技
通常であれば、変数sheet
にGASで操作するワークシートを保管して、その後に変数range
にセルの範囲を保管します。
function myFunction() {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
// シート2のB1セルを指定
var sheet = spreadsheet.getSheetByName("シート2");
var range = sheet.getRange("B1");
Logger.log(range.getA1Notation()); // B1
}
しかし、A1表記を用いれば、var sheet = spreadsheet.getSheetByName("ワークシート名");
としなくても、シート名を指定しそのままセル範囲を指定できるようになります。
その際、Sheet.getRange(a1Notation)
ではなく、Spreadsheet.getRange(a1Notation)
を使用するので、注意が必要です。
メソッド | 戻り値の型 | 説明 |
---|---|---|
Spreadsheet.getRange(a1Notation) |
Range |
シート名!A1表記またはシート名!R1C1表記で指定したセル範囲のRange オブジェクトを返す |
function myFunction() {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
// シート2のB1セルを指定
var range = spreadsheet.getRange("シート2!B1");
Logger.log(range.getA1Notation()); // B1
}
数値で指定する
sheet.getRange(row, column [, numRows [, numColumns]]);
パラメータ | 型 | 説明 |
---|---|---|
row |
Integer |
指定する範囲の行番号 |
column |
Integer |
指定する範囲の列番号。A列を1とする |
numRows |
Integer |
範囲の行数を指定。デフォルト1。(省略可) |
numColumns |
Integer |
範囲の列数を指定。デフォルト1。(省略可) |
サンプルコード
function myFunction() {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spreadsheet.getActiveSheet();
// B1セルを数値で指定
var range1 = sheet.getRange(1, 2);
Logger.log(range1.getA1Notation()); // B1
// B1:B4セルを数値で指定
var range2 = sheet.getRange(1, 2, 4);
Logger.log(range2.getA1Notation()); // B1:B4
// B1:D3セルを数値で指定
var range3 = sheet.getRange(1, 2, 3, 3);
Logger.log(range3.getA1Notation()); // B1:D3
}
さいごに
今回は、SpreadsheetApp.Spreadsheet
のgetRange
メソッドについて紹介しました。
getRange
メソッドは、GASを使ってスプレッドシートを操作するときに、必ずと言っていいほど使うメソッドなので、ちゃんと使えるようにしておきましょう〜。
それでは