SpreadSheet

【スプレッドシート】getCurrentCellとgetActiveRangeの違い

GoogleAppsScript(GAS)でよく利用するメソッド、getCurrentCellgetActiveRange 2つのメソッドの違い具体的な使い方を紹介します。というかメモ。

getCurrentCellは選択されている1つのセルが対象

getCurrentCellの概要

getCurrentCell は、スプレッドシート内で現在選択されているセル(アクティブセル)を取得するためのメソッドです。範囲全体ではなく、ユーザーが現在操作している1つのセルを対象とします。

特徴

  • 選択範囲が1つのセルの場合はそのセルを取得します。
  • 複数セルを選択している場合でも、範囲内の**最初のセル(アクティブセル)**だけを返します。

getCurrentCell利用シーン

  • 現在操作中の1つのセルのデータを取得したり、そのセルにデータを挿入したい場合に最適です。

コードサンプル

現在アクティブなセルの値を取得してログに出力する例です。

function logCurrentCell() {
  let sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  let currentCell = sheet.getCurrentCell();
  Logger.log("現在のアクティブセル: " + currentCell.getA1Notation());
}

getCurrentCellの動作

  • アクティブセルB2 の場合:
    B2 が取得されます。
  • 選択範囲が A1:C3 で、アクティブセルが A1 の場合:
    A1 だけが取得されます。

getActiveRangeは選択中のセル範囲が対象

getActiveRangeの概要

getActiveRange は、スプレッドシート内で現在選択されている範囲全体を取得するためのメソッドです。1つのセルだけでなく、選択されているセルのグループ全体を対象とします。

特徴

  • 1セル選択中であれば、そのセルを範囲として返します。
  • 複数セル選択中であれば、その全範囲を返します。

getActiveRangeの利用シーン

  • 選択された範囲全体のデータを処理したり、フォーマットを適用したい場合に最適です。

コードサンプル

現在選択されている範囲の値を取得して、ログに出力するサンプルを紹介します。

function logActiveRange() {
  let sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  let activeRange = sheet.getActiveRange();
  Logger.log("現在選択中の範囲: " + activeRange.getA1Notation());
}

getActiveRangeの動作例

  • 1セル選択中(例: B2 のみ選択):
    → 範囲 B2 を取得。
  • 複数セル選択中(例: A1:C3 を選択):
    → 範囲 A1:C3 を取得。

getCurrentCell と getActiveRange の違い

それぞれの特徴を表にまとめました。

特徴getCurrentCellgetActiveRange
選択対象アクティブな1つのセル選択されている範囲全体
戻り値1つのセルの Range オブジェクト複数セルを含む可能性のある Range
複数セル選択時の動作最初の1セルのみを取得範囲全体を取得
主な用途現在のセルの操作範囲全体の操作
getCurrentCell と getActiveRange の違い

getCurrentCell・getActiveRange 実際の使い分けサンプル

例1. アクティブセルに値を設定する(getCurrentCellを使う)

以下は、現在のアクティブセルに "Hello" という値を入力する例です。

function setValueToCurrentCell() {
  let sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  let currentCell = sheet.getCurrentCell();
  currentCell.setValue("Hello");
}

例2. 選択範囲全体に背景色を設定(getActiveRangeを使う)

以下は、選択範囲全体の背景色を黄色に変更する例です。

function setBackgroundColorToActiveRange() {
let sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
let activeRange = sheet.getActiveRange();
activeRange.setBackground("yellow");
}

各メソッドのベストプラクティス

  • 単一セルを対象とする場合は、getCurrentCell を使用する方がコードの意図が明確になります。
  • 範囲全体の処理をしたい場合は、getActiveRange を使用しましょう。

まとめ

getCurrentCellgetActiveRange は、それぞれ似て非なるもの。

  • getCurrentCell: アクティブな1セルを操作するのに便利。
  • getActiveRange: 選択範囲全体を操作するのに適している。

両者の特性を理解して使い分け、より効率的にスプレッドシートを操作しましょう。

スプレッドシート関連記事

https://it-info.blue/Spreadsheet/

-SpreadSheet