GoogleAppsScript(GAS)でよく利用するメソッド、getCurrentCell
と getActiveRange
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 の違い
それぞれの特徴を表にまとめました。
特徴 | getCurrentCell | getActiveRange |
---|---|---|
選択対象 | アクティブな1つのセル | 選択されている範囲全体 |
戻り値 | 1つのセルの Range オブジェクト | 複数セルを含む可能性のある Range |
複数セル選択時の動作 | 最初の1セルのみを取得 | 範囲全体を取得 |
主な用途 | 現在のセルの操作 | 範囲全体の操作 |
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
を使用しましょう。
まとめ
getCurrentCell
と getActiveRange
は、それぞれ似て非なるもの。
getCurrentCell
: アクティブな1セルを操作するのに便利。getActiveRange
: 選択範囲全体を操作するのに適している。
両者の特性を理解して使い分け、より効率的にスプレッドシートを操作しましょう。