GAS PR

[GAS]アクティブなシート・セル範囲の取得やアクティブ化の方法 -SpreadSheetAppクラス-

記事内に商品プロモーションを含む場合があります

Google Apps Script (GAS) でスプレッドシートのシートやセル範囲等を取得する方法や、指定したシートやセル範囲等をアクティブにする方法を説明します。

SpreadSheetAppクラスのメソッドを利用した手順について説明します。

Google Apps Scriptの基本的な使い方については下記をご覧ください。

GASによるスプレッドシート操作の概要

GASでスプレッドシートを操作するための「SpreadSheetサービス」は、主に下記のクラスで構成されています。

クラス説明
SpreadSheetAppSpreadSheetサービスの親クラス
Spreadsheetスプレッドシートを操作するクラス
Sheetシートを操作するクラス
Rangeセル範囲を操作するクラス

それぞれ下記のような位置付けになります。

「SpreadSheetApp」→「SpreadSheet」→「Sheet」→「Range」という順の階層構造になっています。操作対象に応じて、下の階層にたどってオブジェクトを取得して利用します。

このページでは、上記の中のSpreadSheetAppクラスの下記のメソッドについて説明します。

メソッド戻り値説明
getActiveSheet()Sheetアクティブなシートを取得する
getActiveRange()Rangeアクティブなセル範囲を取得する
getActiveRangeList()RangeListアクティブなすべてのセル範囲を取得する
getCurrentCell()Range現在のセルを取得する
setActiveSpreadsheet(newActiveSpreadsheet)voidスプレッドシートをアクティブにする
setActiveSheet(sheet)Sheetシートをアクティブにする
setActiveRange(range)Rangeセル範囲をアクティブにする
setActiveRangeList(rangeList)RangeList複数のセル範囲をアクティブにする
setCurrentCell(cell)Rangeセルをアクティブにする

アクティブな各種コンテンツを取得する

アクティブな(選択された)シートやセル範囲などを取得するメソッドを説明します。

アクティブなシートを取得する:getActiveSheet()

アクティブな(選択された)シートを取得する方法です。この方法は、コンテナバインドスクリプトである必要があります。

スプレッドシートのコンテナバインドスクリプトで下記のように実行します。

下記の実行結果になります。正常にシート名が出力されます。
「シート1」というシートをアクティブにしていた場合の例です。

なお、スタンドアロンスクリプトで同じコードを実行すると下記の実行結果になります。スプレッドシートファイルと紐づいておらず、testSheetがnullになるためです。

アクティブなセル範囲を取得する:getActiveRange()

アクティブな(選択された)セル範囲を取得する方法です。この方法は、コンテナバインドスクリプトである必要があります。

スプレッドシートのコンテナバインドスクリプトで下記のように実行します。
getA1Notation()は、セルの位置を表示するメソッドです。

下記の実行結果になります。正常にセルの位置が出力されます。
セル「F2」をアクティブにしていた場合の例です。

次に、複数のセル範囲を選択していた場合の例を見てみます。
複数のセル範囲を選択している場合は、最後に選択したセル範囲を取得します。
下記のように「B2:B4」→「C6:D7」→「F9:G11」の順に複数選択していたとします。

下記の実行結果になります。

次に、下記のように「F9:G11」→「C6:D7」→「B2:B4」の順に複数選択していたとします。選択しているセルはさきほどと同じです。

今度は、下記の実行結果になります。

このように、最後に選択したセル範囲を取得します。
最後に選択したセル範囲は、枠線が太くなっていますし、左上の表示でもわかります。

なお、スタンドアロンスクリプトで同じコードを実行すると下記の実行結果になります。スプレッドシートファイルと紐づいておらず、testRangeがnullになるためです。

アクティブな全てのセル範囲を取得する:getActiveRangeList()

アクティブな(選択された)セル範囲を全て取得する方法です。この方法は、コンテナバインドスクリプトである必要があります。

下記の状態を例に説明します。

スプレッドシートのコンテナバインドスクリプトで下記のように実行します。
取得した複数のセル範囲の位置を for…of文で順番に表示しています。
getA1Notation()は、セルの位置を表示するメソッドです。

下記の実行結果になります。すべてのセル範囲の情報を取得できます。

なお、スタンドアロンスクリプトで同じコードを実行すると下記の実行結果になります。スプレッドシートファイルと紐づいておらず、testRangeListがnullになるためです。

現在のセルを取得する:getCurrentCell()

アクティブな(選択された)セルを取得する方法です。この方法は、コンテナバインドスクリプトである必要があります。

下記の状態を例に説明します。

スプレッドシートのコンテナバインドスクリプトで下記のように実行します。
getA1Notation()は、セルの位置を表示するメソッドです。

下記の実行結果になります。
複数選択していても現在選択している1つのセルを取得します。

なお、スタンドアロンスクリプトで同じコードを実行すると下記の実行結果になります。スプレッドシートファイルと紐づいておらず、testCellがnullになるためです。

各種コンテンツをアクティブにする

シートやセル範囲などの各種コンテンツをアクティブにする(選択状態にする)メソッドを説明します。

スプレッドシートをアクティブにする:setActiveSpreadsheet(newActiveSpreadsheet)

指定したスプレッドシートをアクティブにする方法です。

下記のように実行します。
「XXXXXXXX」の部分には、スプレッドシートIDが入ります。

実行結果は下記になります。「無題のスプレッドシート1」がアクティブだったものが、「無題のスプレッドシート2」がアクティブに変わっています。

シートをアクティブにする:setActiveSheet(sheet)

指定したシートをアクティブにする方法です。この方法は、コンテナバインドスクリプトである必要があります。

スプレッドシートのコンテナバインドスクリプトで下記のように実行します。

下記の状態で実行すると、

下記のように、指定したシートが選択された状態になります。

セル範囲をアクティブにする:setActiveRange(range)

指定したセル範囲をアクティブにする方法です。この方法は、コンテナバインドスクリプトである必要があります。

スプレッドシートのコンテナバインドスクリプトで下記のように実行します。

下記の状態で実行すると、

下記のように、指定したセル範囲が選択された状態になります。

複数のセル範囲をアクティブにする:setActiveRangeList(rangeList)

指定した複数のセル範囲をアクティブにする方法です。この方法は、コンテナバインドスクリプトである必要があります。

スプレッドシートのコンテナバインドスクリプトで下記のように実行します。

下記の状態で実行すると、

下記のように、指定した複数のセル範囲が選択された状態になります。

セルをアクティブにする:setCurrentCell(cell)

指定したセルをアクティブにする方法です。この方法は、コンテナバインドスクリプトである必要があります。

スプレッドシートのコンテナバインドスクリプトで下記のように実行します。

下記の状態で実行すると、

下記のように、指定したセルが選択された状態になります。

まとめ

Google Apps Script (GAS) でスプレッドシートのシートやセル範囲等を取得する方法や、指定したシートやセル範囲等をアクティブにする方法を説明しました。

GASは無料で利用できてとても便利なツールです。

Googleスプレッドシート等のGoogleアプリケーションを利用されている方は、GASを習得することで作業を大きく効率化できます

GASの基本構文を知りたい方は、下記もご覧ください。