GAS開発者向けにスプレッドシートのアクティブ機能をすべてまとめました。
シートやセルを一旦アクティブ状態にして、その現在のセル範囲を取得してデータを編集したりする場面って結構あると思います。
使い方次第で効率は上がるはずなので、使いどころを見極めましょう。
アクティブに関するメソッドをすべて載せてます。少しでも参考になれば幸いです。
Google Apps Script スプレッドシート 基礎 リファレンス
当ページは、GAS公式リファレンスを元にスプレッドシートの機能毎にまとめた基礎的な内容となっております。
若干、文言がおかしい可能性がありますが、あらかじめご了承ください。
GAS基本メソッドまとめ一覧はコチラ↓↓↓です。スプレッドシートの基本的な機能をまとめてますので、ぜひご活用ください。
まずは実際に動かしてみることをオススメします。マクロの登録方法は以下を参照いただければと思います。
GASの本はまだまだ少ないですね。基礎レベルであれば、以下の参考書が初心者にはベストの本です。
基本的な仕様やよく使われる機能の設定方法がまとまっています。
※JavaScriptの知識が既にある程度ある人にとっては冗長かもしれません。
セル範囲クラス[Range]のアクティブ設定
セル範囲のアクティブ設定メソッドです。
アクティブ設定[activate()]
activate()
指定された範囲をアクティブ範囲として設定し、範囲内の左上のセルを現在のセルとして設定します。
function activateSample() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0];
var range = sheet.getRange('A1:D10');
range.activate();
var selection = sheet.getSelection();
// 現在のセル: A1
var currentCell = selection.getCurrentCell();
// 有効範囲: A1:D10
var activeRange = selection.getActiveRange();
}
Return
Range - 連鎖用のセル範囲。
参照:Google Apps Script | REFERENCE | SpreadSheet | Class Range | Methods | activate()
アクティブセルを現在セルとして設定[activateAsCurrentCell()]
activateAsCurrentCell()
指定されたセルを現在のセルとして設定します。
指定されたセルが既存の範囲内にある場合は、そのセルが現在のセルとしてアクティブな範囲になります。
指定されたセルが既存の範囲に存在しない場合は、既存の選択が削除され、そのセルが現在のセルとアクティブ範囲になります。
注:指定された範囲は1つのセルで構成されている必要があります。それ以外の場合は例外がスローされます。
function activateAsCurrentCellSample() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0];
var range = sheet.getRange('B5');
//range.activate();
range.activateAsCurrentCell();
var selection = sheet.getSelection();
// 現在のセル: B5
var currentCell = selection.getCurrentCell();
}
Return
Range - 連鎖用のセル範囲。
参照:Google Apps Script | REFERENCE | SpreadSheet | Class Range | Methods | activateAsCurrentCell()
セル範囲リストクラス[RangeList]のアクティブ設定
セル範囲リストのアクティブ設定メソッドです。
アクティブ設定[activate()]
activate()
Rangeインスタンスのリストを選択します。リストの最後の範囲がアクティブ範囲として設定されます。
注:これは複数の範囲を複数選択する方法を提供します。
function activateSample() {
var sheet = SpreadsheetApp.getActiveSheet();
var rangeList = sheet.getRangeList(['D4', 'B2:C4']);
rangeList.activate();
var selection = sheet.getSelection();
// 現在のセル: B2
var currentCell = selection.getCurrentCell();
// 有効範囲: B2:C4
var activeRange = selection.getActiveRange();
// 有効範囲リスト: [D4, B2:C4]
var activeRangeList = selection.getActiveRangeList();
}
Return
RangeList - 連鎖用のアクティブな範囲のリスト。
参照:Google Apps Script | REFERENCE | SpreadSheet | Class RangeList | Methods | activate()
シートクラス[Sheet]のアクティブ設定
シートのセル範囲、セル範囲リストのアクティブ設定です。
アクティブセル範囲設定[setActiveRange(セル範囲)]
setActiveRange(range)
指定された範囲をアクティブシートのアクティブ範囲として設定し、その範囲内の左上のセルを現在のセルとして設定します。
function setActiveRangeSample() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var range = sheet.getRange('A1:D4');
sheet.setActiveRange(range);
var selection = sheet.getSelection();
// 現在のセル:A1
var currentCell = selection.getCurrentCell();
// 有効範囲:A1:D4
var activeRange = selection.getActiveRange();
}
名前 | タイプ | 説明 |
---|---|---|
range | Range | アクティブ範囲として設定する範囲。 |
Return
Range - 新しくアクティブになった範囲。
参照:Google Apps Script | REFERENCE | SpreadSheet | Class Sheet | Methods | setActiveRange(range)
アクティブセル範囲リスト設定[setActiveRangeList(セル範囲リスト)]
setActiveRangeList(rangeList)
指定された範囲のリストをアクティブシートのアクティブ範囲として設定します。リストの最後の範囲がアクティブ範囲として設定されます。
function setActiveRangeListSample() {
var sheet = SpreadsheetApp.getActiveSheet();
var rangeList = sheet.getRangeList(['D4', 'B2:C4']);
sheet.setActiveRangeList(rangeList);
var selection = sheet.getSelection();
// 現在のセル:B2
var currentCell = selection.getCurrentCell();
// 有効範囲:B2:C4
var activeRange = selection.getActiveRange();
// 有効範囲リスト:[D4、B2:C4]
var activeRangeList = selection.getActiveRangeList();
}
名前 | タイプ | 説明 |
---|---|---|
rangeList | RangeList | 選択する範囲のリスト。 |
Return
RangeList - 新しく選択された範囲のリスト。
シートクラス[Sheet]のアクティブ取得
シートのセル、セル範囲、セル範囲リストのアクティブ取得です。
アクティブセル取得[getActiveCell()]
getActiveCell()
このシートのアクティブセルを返します。
注:現在強調表示されているセルを返すgetCurrentCell()を使用することをお勧めします。
function getActiveCellSample() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];
// アクティブセルを返します
var cell = sheet.getActiveCell();
}
Return
Range - 現在アクティブなセル。
参照:Google Apps Script | REFERENCE | SpreadSheet | Class Sheet | Methods | getActiveCell()
アクティブセル範囲取得[getActiveRange()]
getActiveRange()
アクティブシートの選択範囲を返します。アクティブ範囲がない場合はnullを返します。複数の範囲が選択されている場合、このメソッドは最後に選択された範囲のみを返します。
「アクティブ範囲」という用語は、アクティブシートでユーザーが選択した範囲を指しますが、カスタム機能ではアクティブに再計算されているセルを指します。
function getActiveRangeTest() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var activeRange = sheet.getActiveRange();
}
Return
Range - 有効範囲。
参照:Google Apps Script | REFERENCE | SpreadSheet | Class Sheet | Methods | getActiveRange()
アクティブセル範囲リスト取得[getActiveRangeList()]
getActiveRangeList()
アクティブシート内のアクティブ範囲のリストを返します。アクティブ範囲がない場合はnullを返します。
単一の範囲が選択されている場合、これはgetActiveRange()呼び出しとして機能します。
function getActiveRangeListTest() {
var sheet = SpreadsheetApp.getActiveSheet();
// アクティブ範囲のリストを返します。
var activeRangeList = sheet.getActiveRangeList();
}
Return
RangeList - アクティブ範囲のリスト。
参照:Google Apps Script | REFERENCE | SpreadSheet | Class Sheet | Methods | getActiveRangeList()
スプレッドシートクラス[Spreadsheet]のアクティブ設定
スプレッドシートのシートのアクティブ設定です。※セル範囲、セル範囲リストはシート(Class Sheet)と全く同じなので割愛します。
アクティブシート設定1[setActiveSheet(シート)]
setActiveSheet(sheet)
与えられたシートをスプレッドシートのアクティブシートに設定します。シートが別のスプレッドシートに属していない限り、Google Sheets UIは選択されたシートを表示します。
function setActiveSheetSample() {
// 以下のコードはアクティブなスプレッドシートの最初のシートをアクティブにします。
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
spreadsheet.setActiveSheet(spreadsheet.getSheets()[0]);
}
名前 | タイプ | 説明 |
---|---|---|
sheet | Sheet | アクティブシートとして設定するシート。 |
Return
Sheet - アクティブシート。
アクティブシート設定2[setActiveSheet(シート, リストア選択有無)]
setActiveSheet(sheet, restoreSelection)
指定されたシートをスプレッドシート内のアクティブなシートに設定します。そのシート内の最新の選択を復元するオプションもあります。シートが別のスプレッドシートに属していない限り、Google Sheets UIは選択されたシートを表示します。
function setActiveSheetSample() {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var firstSheet = spreadsheet.getSheets()[0];
var secondSheet = spreadsheet.getSheets()[1];
// 最初のシートをアクティブシートとして設定し、範囲D4:F4を選択します。
spreadsheet.setActiveSheet(firstSheet).getRange('D4:F4').activate();
// 2枚目のシートに切り替えて作業を進めます。
spreadsheet.setActiveSheet(secondSheet);
// 最初のシートに戻り、その選択を元に戻す。
spreadsheet.setActiveSheet(firstSheet, true);
// 最初のシートの選択が復元され、D4:F4が記録されます
var range = spreadsheet.getActiveSheet().getSelection().getActiveRange();
Logger.log(range.getA1Notation());
}
名前 | タイプ | 説明 |
---|---|---|
sheet | Sheet | 新しいアクティブシート。 |
restoreSelection | Boolean | trueの場合、新しいシートがアクティブになると、新しいアクティブシートの最新の選択が再び選択されます。 falseの場合、現在の選択を変更せずに新しいシートがアクティブになります。 |
Return
Sheet - 新しいアクティブシート。
スプレッドシートクラス[Spreadsheet]のアクティブ取得
スプレッドシートのシートのアクティブ取得です。※セル、セル範囲、セル範囲リストはシート(Class Sheet)と全く同じなので割愛します。
アクティブシート取得[getActiveSheet()]
getActiveSheet()
スプレッドシート内のアクティブシートを取得します。
スプレッドシートのアクティブシートは、スプレッドシートのUIに表示されているシートです。
function getActiveSheetSample() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
}
Return
Sheet - スプレッドシート内のアクティブシート。
参照:Google Apps Script | REFERENCE | SpreadSheet | Class Spreadsheet | Methods | getActiveSheet()
最後に
GASアクティブ機能のまとめをご紹介させていただきました。
必要に応じて、有益な情報でさらに更新していきたいと思います。
プログラミングスキルを向上させるためには、本を読むだけでは脳にインプットされませんね。
実際に手を動かしてアウトプットしまくるのが一番の近道だと思います。
実際にサンプルソースをコピーして実行した結果がどうなるかを体験してみてください。
自分なりのアレンジを加えたり、なぜエラーになるのかを考え、何度も試行錯誤して問題を解決しまくり、着実に理解しながらスキルを向上させていきましょう。
GASはExcelVBAとはかなり違いますが、ベースとなっているJavaScriptは覚えて損はないプログラミング言語なのでショートカットキーなどと組み合わせてぜひ活用してみてください。
Googleスプレッドシート全ショートカットキー一覧はこちら↓↓↓
ショートカットキー一覧にもGASメソッドを載せています。どの操作からどのメソッドが呼ばれるのかイメージしてください。
コメント