GASでスプレッドシートの選択しているセル・範囲の位置(行番号・列番号)を取得する方法

Google Apps Script(GAS)でスプレッドシートの選択しているセルの位置を取得する方法を紹介します。

選択したセルや選択範囲の位置について行番号と列番号を取得するメソッドを解説していきます。

スプレッドシートで選択したセルの位置をGASで知りたい

Google Apps Script(GAS)でスプレッドシートの様々な処理を行っていると、現在選択しているセルや範囲を取得したいケースが出てきます。

スプレッドシートのセルの選択範囲をGoogle Apps Scriptで取得したい

ユーザーが選択しているセルの位置の情報を読み取り、同じ行の別セルに結果を出力するといった処理を行うことがあります。

こうした選択情報を取得できない場合は、シート上にあるセルをチェックして、条件を満たしたセルのみ処理するといった形になり、実行時間が長くなりがちです。

スプレッドシートの選択範囲や選択セルを取得できると、処理を限定的に行い、GASスクリプトの実行時間を短くすることができます。

コンテナバインドスクリプトのみ選択範囲を取得可能

なお、Google Apps Script(GAS)でスプレッドシートの選択したセル範囲を取得するには、スプレッドシートに紐づくコンテナバインドスクリプトが前提条件となります。

GASがスプレッドシートと独立しているスタンドアロンスクリプトではシート上の選択範囲の情報を参照できません。

※コンテナバインド型とスタンドアロン型のGASの違いは下記の記事で解説しています。

Google Apps Script入門〜スタンドアロン型とコンテナバインド型の比較と解説

GASで選択セルの位置を取得する方法

Google Apps Script(GAS)でスプレッドシートのシート上の選択セルを取得するには、getActiveCellメソッドを使用します。

getActiveCellメソッドでシートで選択したセルをRange型として取得することができます。

アクティブなセルの範囲を取得したら、getRowメソッドで行番号、getColumnメソッドで列番号が確認できます。

スプレッドシートの選択したセルの行・列を取得するGASのサンプルコードは以下のようになります。

Google Apps Scriptのスクリプトでスプレッドシートの選択したセルの行・列を取得するサンプルコード

function myFunction() {
//アクティブなスプレッドシートのシートを取得する
let mySheet = SpreadsheetApp.getActiveSheet();
//選択されているアクティブなセルを取得する
let myActiveCell = mySheet.getActiveCell();
//アクティブなセルからRow:行、Column:列を取得する
let selectedRow = myActiveCell.getRow();
let selectedColumn = myActiveCell.getColumn();
//スプレッドシート上でアクティブなセルをポップアップ表示
Browser.msgBox("セルの選択位置","行:"+selectedRow+ "、列:"+selectedColumn, Browser.Buttons.OK);
}

GASのサンプルコードを実行すると、スプレッドシート上で選択セルの行番号と列番号を表示します。

Google Apps Script(GAS)を実行して選択しているセルの行番号と列番号を取得してポップアップ表示する

シートで実際にカーソルがある位置の行・列を取得できていることがわかります。

GASで選択範囲の位置を取得する方法

Google Apps Script(GAS)でスプレッドシートのシート上の選択範囲を取得するには、getActiveRange()メソッドを使用します。

getActiveRangeメソッドによって、対象シート上の選択範囲をRange型として取得することができます。

範囲が複数セルに及んでいる場合には、getRow,getColumnメソッドだけでは範囲を取得できません。

getLastRowメソッド、getLastColumnメソッドで選択範囲内の最終行・最終列を取得します。

function myFunction() {
//アクティブなスプレッドシートのシートを取得する
let mySheet = SpreadsheetApp.getActiveSheet();
//選択されているアクティブな範囲を取得する
let myActiveRange = mySheet.getActiveRange();
//アクティブな範囲から最初のRow:行、Column:列を取得する
let selectedRow = myActiveRange.getRow();
let selectedLastRow = myActiveRange.getLastRow();
//アクティブな範囲から最終のRow:行、Column:列を取得する
let selectedColumn = myActiveRange.getColumn();
let selectedLastColumn = myActiveRange.getLastColumn();
//スプレッドシート上でアクティブなセルをポップアップ表示
Browser.msgBox("セルの選択位置", "最初行:"+selectedRow+"、最初列:"+selectedColumn+"\n最終行:"+selectedLastRow+"、最終列:"+selectedLastColumn, Browser.Buttons.OK);
}

Google Apps Script(GAS)でスプレッドシートの選択範囲のセルの行・列の位置を取得し、ポップアップメッセージで表示する

アクティブな範囲の最初と最終セルを取得することで、選択した範囲がどこからどこまでか知ることができます。

まとめ・終わりに

今回、スプレッドシートのシートで選択している範囲の位置(行番号・列番号)をGoogle Apps Scriptで取得する方法を紹介しました。

getRow,getColumnメソッドや、getLastRow,getLastColumnメソッドを利用することで選択範囲の位置情報を取得可能です。

ただし、このGASスクリプトはスプレッドシートに紐づくコンテナバインド型でしか実行できません。

ユーザーが選択している範囲に応じて処理する場所を変えるといった用途で使えるので、ぜひ活用してみてください。