この記事はGoogleスプレッドシートにおける、アクティブシートの定義について解説した記事です。(18.12.24)
結論
アクティブシートとは、スプレッドシートの一番左側にきているシートを指すのではないかと仮説が立った。
詳しい人のアドヴァイスを求む。
追記(2019.5.14)
getActiveSheet()をスクリプトエディタから直接実行すると、一番左側にあるシートを取得するが、シート上からボタンに割り当てた関数を呼び出すとそのボタンが存在するシートが取得される。また、セルの値が変更された際にトリガーが呼び出される場合は、変更されたセルが存在するシートが取得される。
前置き
GASを使ってスプレッドシートのカスタマイズをしていたのだが、普段はシート名を指定してシートを取得していたためあまり気にならなかったが、「アクティブシート」でシートを指定しようとした際に、「アクティブ」の定義が気になったため調べてみた。
対象:これからGASを使ったスプレッドシート開発をしようと思っている方
アクティブシートの取得はスプレッドシートを使った開発の基本中の基本であり、万人が避けては通れない知識かと思われますのでぜひ一度めを通していただけるとよろしいかもしれません。
(この記事は間違いを含んでいる可能性がありますので、スプシに詳しい方は間違いを見つけ次第訂正していただけると助かります。)
公式レファレンス
まずはgetactivesheetメソッドに関する公式レファレンスを確認してみる。→公式レファレンス
【公式レファレンス】(18.12.24)
The active sheet in a spreadsheet is the sheet that is being displayed in the spreadsheet UI.
【訳】スプレッドシートにおけるアクティブシートとは、スプレッドシートUI内に表示されているシートのことである。
スプレッドシートとはクラウドツールであり、複数人で開くことができるため、これだけだと、誰のUI(ウィンドウ)で開かれているシートを指しているのかわからない。また、直感的に公式レファレンスが定義する「アクティブシート」と実際の「アクティブシート」は異なる気がした。
一応アクティブシートの定義に関する他の記事も読んでみた。→【active sheet/cell definition】
The active cell is also known as the current cell or the cell that holds the focus of the cursor.
~中略~
Similarly, the active sheet or current sheet is the worksheet containing the active cell.
つまるところ、アクティブセルとはカーソルで選択しているセルのことを指し、アクティブシートとはそのアクティブセルを含むシートを指すようである。
検証
実際にアクティブシートが定義通りなのか検証してみた。
GASを用いてスプレッドシートの開発を行う際、スプレッドシートに紐づけられたスクリプトファイルと独立したスクリプトファイルの二つを用いることができるが、今回は独立したスクリプトファイルを利用して検証した。
(ウィンドを二つ開き、片方ではスプレッドシートを開き、もう片方ではスクリプトファイルを開いている。)
テスト用のスプレッドシートを作り、IDで指定して呼び出す。
getActiveSheet()メソッドで呼び出すことができるシートを、アクティブセルを変えながら検証する。
結果




アクティブセルがシート1にあるとき、シート2にあるとき、両方でmufunctionの実行ログ上ではシート1が表示された。
仮説


シート2を一番左側に置くとシート2がアクティブとして認識された。
また、もう一度シート1を左側に戻すと、シート1がアクティブシートとして認識された。
さらに、3つ以上のシートを作成して検証したが、やはり一番左側にきているシートがアクティブシートとして認識された。
(その他、セルを選択するだけでなくデータを入力してみたりしたが結果は同じだった。)
以上から、アクティブシートとはスプレッドシートの一番左側に位置するシートを指すのではないかという仮説が生まれた。