1. ホーム
  2. /
  3. [GAS]
  4. /
  5. 【GAS】getCell()で範囲内の特定セルを操作する方法|getRange()との違いも解説

【GAS】getCell()で範囲内の特定セルを操作する方法|getRange()との違いも解説

【GAS】getCell()で範囲内の特定セルを操作する方法|getRange()との違いも解説

Google Apps Script (GAS)でスプレッドシートを操作する上で、getCell(row, column)getRange()と並んで非常によく使われる基本的なメソッドです。特に、特定の範囲内をループで処理する際に絶大な効果を発揮します。

この記事では、getCell()の基本からgetRange()との使い分け、実践的な活用法までを分かりやすく解説します。

Google Apps Script 始め方 スプレッドシート 活用例
Google Apps Script 始め方 スプレッドシート 活用例 を各ショップで検索

getCell()とは?

getCell(row, column)は、すでにある範囲(Rangeオブジェクト)の中で、指定した行・列番号(インデックス)に該当する単一のセルを取得するメソッドです。

const sheet = SpreadsheetApp.getActiveSheet();

// ① 親となる範囲をまず取得
const parentRange = sheet.getRange("B2:D10"); 

// ② 親範囲の中の (1行目, 1列目) のセルを取得 → B2セル
const targetCell = parentRange.getCell(1, 1); 

console.log(targetCell.getA1Notation()); // "B2"

重要なポイント:座標は「相対的」

getCell()の行・列番号は、シート全体での絶対的な位置ではなく、親範囲の左上を(1, 1)とする相対的な位置であることに注意が必要です。

  • parentRange.getCell(1, 1) → B2セル
  • parentRange.getCell(2, 3) → D3セル (B2から見て2行目、3列目)

インデックスは1から始まるので、getCell(0, 0)はエラーになります。

getRange()との違い

getRange(row, column)もセルを取得するメソッドですが、こちらはシートを基準とした絶対座標でセルを取得します。

メソッド基準戻り値主な用途
sheet.getRange(2, 2)シートRangeシート上の特定のセルを直接指定する。
range.getCell(1, 1)範囲Range範囲内をループ処理する

getCell()は、特定の範囲を起点として処理を行う場合に非常に便利です。

実践例:範囲内のデータをループで処理する

getCell()が最も輝くのは、forループと組み合わせて特定の範囲内のデータを1行ずつ処理するシナリオです。

以下の例では、「ステータス」列が「完了」の行のタスク名をグレーアウト(取り消し線を追加)します。

function processTasks() {
  const sheet = SpreadsheetApp.getActiveSheet();
  // A2からC列の最終行までを処理範囲とする
  const taskRange = sheet.getRange("A2:C" + sheet.getLastRow());

  // 範囲内の行数だけループ
  for (let i = 1; i <= taskRange.getNumRows(); i++) {
    
    // i行目の各セルをgetCell()で取得
    const taskCell = taskRange.getCell(i, 1);     // 範囲内の1列目 (タスク名)
    const statusCell = taskRange.getCell(i, 3);    // 範囲内の3列目 (ステータス)

    // ステータスが「完了」なら
    if (statusCell.getValue() === "完了") {
      // タスク名のセルに取り消し線を設定
      taskCell.setFontLine("line-through");
    }
  }
}

このように、最初にgetRange()で処理対象の全体範囲を一度だけ取得し、ループの中ではgetCell()を使って各行のセルにアクセスするのが、効率的で可読性の高い書き方です。

エラーハンドリング

getCell()で親範囲を超えるインデックスを指定するとエラーになります。例えば、3行しかない範囲に対してgetCell(4, 1)を呼び出すと失敗します。

スクリプトの安定性を高めるためには、getNumRows()getNumColumns()で範囲の大きさを確認し、ループの範囲を正しく設定することが重要です。

const maxRows = range.getNumRows();
const maxCols = range.getNumColumns();

// この範囲を超えるgetCell()はエラーになる
const cell = range.getCell(maxRows + 1, maxCols); // エラー

まとめ

getCell()は、GASでスプレッドシートを操作する上で欠かせない基本メソッドです。

  • 範囲内の相対的なセルを取得する。
  • forループと組み合わせることで、特定の範囲内のデータを効率的に処理できる。
  • getRange()で全体の範囲を定義し、getCell()で個々のセルを操作するのが王道パターン。

このメソッドをマスターして、日々の定型業務をどんどん自動化していきましょう。

Google Apps Script 始め方 スプレッドシート 活用例
Google Apps Script 始め方 スプレッドシート 活用例 を各ショップで検索
Class Range | Apps Script | Google for Developers

Get cell value by row and column number using google script

I have created a function that returns the row indexes which contain the information I am interested in, as below: [0.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0,...

関連記事

【GAS】getColumn()で範囲の開始列番号を取得する方法|列単位のループ処理に応用

【GAS】getColumn()で範囲の開始列番号を取得する方法|列単位のループ処理に応用

Google Apps Script (GAS)でスプレッドシートの特定のに対して処理を行いたい時、getColumn()は欠かせない基本メソッドです。このメソッドを使えば、指定した範囲がどの列から始まっているかを数値で簡単に取得できます。

この記事では、getColumn()の基本的な使い方から、列単位で処理を繰り返す実践的なループ処理まで、分かりやすく解説します。

Google Apps Script 始め方 スプレッドシート 活用例
Google Apps Script 始め方 スプレッドシート 活用例 を各ショップで検索

getColumn()の基本的な使い方

getColumn()Rangeオブジェクトに適用するメソッドで、その範囲の一番左の列番号を返します。 スプレッドシートの列はA列を1、B列を2、C列を3…という数値で管理されており、getColumn()はこの数値を返します。

【GAS】スプレッドシートの指定範囲の行数を取得!getNumRows()徹底解説

【GAS】スプレッドシートの指定範囲の行数を取得!getNumRows()徹底解説

Google Apps Script (GAS) を使ってスプレッドシートの自動化を行う際、指定した「範囲にいくつの行が含まれているか」を正確に把握することは、スクリプトの柔軟性と汎用性を高める上で不可欠です。getNumRows() メソッドは、この範囲の行数を簡単に取得し、動的なデータ処理やデータ検証を可能にする強力なツールです。

本記事では、GASのgetNumRows()の基本的な使い方から、データ範囲の動的取得、getLastRow()との違い、二次元配列との連携、データフォーマットの検証と自動修正、さらにはパフォーマンス最適化まで、具体的なコードを交えて徹底解説します。getNumRows()をマスターし、スプレッドシートの自動化スクリプトをより堅牢で効率的なものに変えましょう。