どもども!GAS(Google Apps Script)を使っとると、スプレッドシートの行番号を取得する場面が結構あるっちゃね。今回は、その中でも getRowIndex()
メソッド にフォーカスして、基本的な使い方から応用テクまで、がっつり解説していくばい!
1. getRowIndex() って何さ?
このメソッドは、スプレッドシートの Range
クラスに属しとって、指定した範囲の最初の行番号を取得する ためのメソッドたい。
const rowNumber = range.getRowIndex();
引数は不要で、指定したセル範囲の 先頭行の番号 を整数値で返すんじゃ。
例えばこんな感じ!
function basicExample() {
const sheet = SpreadsheetApp.getActiveSheet();
const range = sheet.getRange("C3");
const rowNumber = range.getRowIndex();
Logger.log(rowNumber); // 3 が出力されるばい!
}
C3セルを指定したら、その行番号「3」が返ってくるっちゃね!
2. getRowIndex() と他の行取得メソッドの違い
「行番号を取得する」ってだけなら、他にも色々なメソッドがあるけん、違いをまとめとくばい!
メソッド名 | 戻り値 | 説明 |
---|---|---|
getRowIndex() | 整数 | 指定範囲の先頭行の番号を取得 |
getRow() | 整数 | getRowIndex() とほぼ同じ動作 |
getLastRow() | 整数 | データが入っとる最終行を取得 |
getNumRows() | 整数 | 指定範囲内の行数を取得 |
たとえば、B2:D5 を対象にすると、
function rangeBehavior() {
const sheet = SpreadsheetApp.getActiveSheet();
const range = sheet.getRange("B2:D5");
console.log(range.getRowIndex()); // 2 を出力
console.log(range.getNumRows()); // 4 を出力
}
複数行指定しとる場合でも、getRowIndex()
は「開始行」を返すけん、注意ばい!
3. 実践! getRowIndex() を活用するテクニック
(1) 動的に範囲を指定して行番号を取得
function dynamicRangeExample() {
const sheet = SpreadsheetApp.getActiveSheet();
const lastRow = sheet.getLastRow();
const dataRange = sheet.getRange(2, 1, lastRow-1, 3);
const startRow = dataRange.getRowIndex();
Logger.log(`データ範囲開始行: ${startRow}`);
}
データがある範囲の最初の行を取得するときに便利やけん、覚えておくといいばい!
(2) 条件付きで行を特定する
function conditionalRowDetection() {
const sheet = SpreadsheetApp.getActiveSheet();
const dataRange = sheet.getDataRange();
const values = dataRange.getValues();
values.forEach((row, index) => {
if (row[0] === "重要") {
const targetRange = sheet.getRange(index + 1, 1);
console.log(`重要マーク行: ${targetRange.getRowIndex()}`);
}
});
}
A列に「重要」って書いてある行の番号を取得するスクリプトばい!
4. getRowIndex() を使うときの注意点
(1) 存在しない範囲へのアクセスはエラーになる
const invalidRange = sheet.getRange("XFD1048576");
console.log(invalidRange.getRowIndex()); // エラー!
最大行数・最大列数を超えた範囲を指定するとエラーになるばい!
(2) 非アクティブなシートを参照するとエラー!
const inactiveSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("存在しないシート");
const range = inactiveSheet.getRange("A1"); // エラー発生!
getSheetByName()
で null が返る可能性があるけん、チェックすること!
if (inactiveSheet) {
const range = inactiveSheet.getRange("A1");
console.log(range.getRowIndex());
} else {
console.log("シートが存在しません!");
}
5. まとめ
getRowIndex()
は「指定した範囲の先頭行」を取得する便利なメソッド ばい!
💡 ポイントまとめ!
✅ getRowIndex()
は範囲の開始行を取得する ✅ getRow()
とほぼ同じやけど、コードの意図を明確にできる ✅ getLastRow()
や getNumRows()
と組み合わせるとさらに便利! ✅ バッチ処理を意識したコーディングで高速化を図ろう!
これで getRowIndex()
をフル活用できるようになったばい! GAS でのスプレッドシート操作がもっと楽しくなるけん、ぜひ試してみてね!
コメント