【GAS】スプレッドシートのセレクション機能まとめ【サンプルソース付】

快速ワーク
スポンサーリンク

GAS開発者向けにスプレッドシートのセレクション機能をすべてまとめました。

アクティブ機能と似てます。わかりやすく使いやすい方を使ってもらえればと思います。

特に「getNextDataRange」は意外と使えますのでオススメです。「Ctrl+Shift+[方向キー]」の操作です。

セレクションに関するメソッドをすべて載せてます。少しでも参考になれば幸いです。


スポンサーリンク

Google Apps Script スプレッドシート 基礎 リファレンス

当ページは、GAS公式リファレンスを元にスプレッドシートの機能毎にまとめた基礎的な内容となっております。

若干、文言がおかしい可能性がありますが、あらかじめご了承ください。

 

GAS基本メソッドまとめ一覧はコチラ↓↓↓です。スプレッドシートの基本的な機能をまとめてますので、ぜひご活用ください。

【GAS】スプレッドシート基本メソッドまとめ一覧【初心者入門】
GAS開発者向けにスプレッドシートの基本的なメソッドを一覧にまとめました。各機能ごとのクラス、メソッドごとのサンプルソース付ページへリンクする一覧です。初心者にとって、スプレッドシートの基本的な操作・機能単位のメソッドを知...

 

まずは実際に動かしてみることをオススメします。マクロの登録方法は以下を参照いただければと思います。

【GAS】Googleスプレッドシートでマクロの使い方入門【動画付】
Googleの「Google Apps Script」通称GAS。GoogleマップやGメールなど、いろんなGoogle関連のサービスと自由に連携できたり、独自のWebアプリを開発することもできる、いろんな可能性を秘めたワクワクの...

 

GASの本はまだまだ少ないですね。基礎レベルであれば、以下の参考書が初心者にはベストの本です。

基本的な仕様やよく使われる機能の設定方法がまとまっています。

※JavaScriptの知識が既にある程度ある人にとっては冗長かもしれません。


シートクラス[Sheet]のアクティブ選択設定

シートのアクティブ選択設定です。

アクティブ選択設定[setActiveSelection(セル範囲)]

setActiveSelection(range)
このシートのアクティブな選択領域を設定します。

function setActiveSelectionSample() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheets()[0];

  var range = sheet.getRange("A1:D4");
  sheet.setActiveSelection(range);
}
Parameters
名前タイプ説明
rangeRangeアクティブな選択範囲として設定する範囲。

Return
Range - 新しくアクティブになった範囲。

参照:Google Apps Script | REFERENCE | SpreadSheet | Class Sheet | Methods | setActiveSelection(range)

アクティブ選択設定[setActiveSelection(A1形式)]

setActiveSelection(a1Notation)
A1表記またはR1C1表記の指定に従って、アクティブな選択範囲を設定します。

function setActiveSelectionSample() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheets()[0];

  sheet.setActiveSelection("A1:D4");
}
Parameters
名前タイプ説明
a1NotationStringA1表記またはR1C1表記で指定されているように、アクティブとして設定する範囲。

Return
Range - 新しくアクティブになった範囲。

参照:Google Apps Script | REFERENCE | SpreadSheet | Class Sheet | Methods | setActiveSelection(a1Notation)

現在セル選択設定[setCurrentCell(セル)]

setCurrentCell(cell)
指定されたセルを現在のセルとして設定します。

指定されたセルがすでに選択されている範囲内にある場合は、その範囲が現在のセルとしてアクティブな範囲になります。

指定されたセルが選択されたどの範囲にも存在しない場合は、既存の選択が削除され、そのセルが現在のセルおよびアクティブ範囲になります。

注:指定された範囲は1つのセルで構成されている必要があります。それ以外の場合は例外がスローされます。

function setCurrentCellSample() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var cell = sheet.getRange('B5');
  sheet.setCurrentCell(cell);

  var selection = sheet.getSelection();
  // 現在のセル:B5
  var currentCell = selection.getCurrentCell();
}
Parameters
名前タイプ説明
cellRange現在のセルとして設定するセル。

Return
Range - 新しく設定された現在のセル。

参照:Google Apps Script | REFERENCE | SpreadSheet | Class Sheet | Methods | setCurrentCell(cell)


シートクラス[Sheet]の選択取得

シートの選択取得です。

選択取得[getSelection()]

getSelection()
スプレッドシート内の現在の選択項目を返します。

function getSelectionSample() {
  var selection = SpreadsheetApp.getActiveSpreadsheet().getSelection();
  var currentCell = selection.getCurrentCell();
}

Return
Selection - 現在の選択。

参照:Google Apps Script | REFERENCE | SpreadSheet | Class Sheet | Methods | getSelection()

現在セル選択取得[getCurrentCell()]

getCurrentCell()
アクティブシートの現在のセルを返します。現在のセルがない場合はnullを返します。現在のセルは、Google Sheets UIでフォーカスされているセルで、暗い枠線で強調表示されています。現在のセルが複数存在することはありません。ユーザーが1つ以上のセル範囲を選択すると、選択範囲内のセルの1つが現在のセルになります。

function getCurrentCellSample() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  // 現在の強調表示されているセルをアクティブな範囲の1つで返します。
  var currentCell = sheet.getCurrentCell();
}

Return
Range - 現在のセル。

参照:Google Apps Script | REFERENCE | SpreadSheet | Class Sheet | Methods | getCurrentCell()




セレクションクラス[Selection]

アクティブシートの現在のアクティブな選択にアクセスします。選択範囲は、ユーザーがシート内で強調表示したセルのセットで、隣接していない範囲でもかまいません。

選択範囲の1つのセルは現在のセルで、ユーザーの現在のフォーカスがあります。現在のセルは、Google Sheets UIでは、より濃い境界線で強調表示されています。

function selectionSample() {
  var activeSheet = SpreadsheetApp.getActiveSheet();
  var rangeList = activeSheet.getRangeList(['A1:B4', 'D1:E4']);
  rangeList.activate();

  var selection = activeSheet.getSelection();
  // 現在のセル:D1
  Logger.log('Current Cell: ' + selection.getCurrentCell().getA1Notation());
  // 有効範囲:D1:E4
  Logger.log('Active Range: ' + selection.getActiveRange().getA1Notation());
  // 有効範囲:A1:B4、D1:E4
  var ranges =  selection.getActiveRangeList().getRanges();
  for (var i = 0; i < ranges.length; i++) {
    Logger.log('Active Ranges: ' + ranges[i].getA1Notation());
  }
  Logger.log('Active Sheet: ' + selection.getActiveSheet().getName());
}

アクティブセル範囲取得[getActiveRange()]

getActiveRange()
アクティブシートの選択範囲を返します。アクティブ範囲がない場合はnullを返します。複数の範囲が選択されている場合、このメソッドは最後に選択された範囲のみを返します。

function getActiveRangeTest() {
  var selection = SpreadsheetApp.getActiveSpreadsheet().getSelection();
  var activeRange = selection.getActiveRange();
}

Return
Range - アクティブな範囲。

参照:Google Apps Script | REFERENCE | SpreadSheet | Class Selection | Methods | getActiveRange()

アクティブセル範囲リスト取得[getActiveRangeList()]

getActiveRangeList()
アクティブシート内のアクティブ範囲のリストを返します。アクティブ範囲がない場合はnullを返します。

単一の範囲が選択されている場合、これはgetActiveRange()呼び出しとして機能します。

function getActiveRangeListTest() {
  var sheet = SpreadsheetApp.getActiveSheet();
  // アクティブ範囲のリストを返します。
  var activeRangeList = sheet.getActiveRangeList();
}

Return
RangeList - アクティブな範囲のリスト。

参照:Google Apps Script | REFERENCE | SpreadSheet | Class Selection | Methods | getActiveRangeList()

アクティブシート取得[getActiveSheet()]

getActiveSheet()
スプレッドシート内のアクティブなシートを返します。

function getActiveSheetSample() {
  var selection = SpreadsheetApp.getActiveSpreadsheet().getSelection();
  var activeSheet = selection.getActiveSheet();
}

Return
Sheet - スプレッドシート内のアクティブシート。

参照:Google Apps Script | REFERENCE | SpreadSheet | Class Selection | Methods | getActiveSheet()

現在セル選択取得[getCurrentCell()]

getCurrentCell()
アクティブな範囲の1つで選択されている現在の(強調表示されている)セルを返します。現在のセルがない場合はnullを返します。

function getCurrentCellSample() {
  var selection = SpreadsheetApp.getActiveSpreadsheet().getSelection();
  // 現在の強調表示されているセルをアクティブな範囲の1つで返します。
  var currentCell = selection.getCurrentCell();
}

Return
Range - 現在のセル。

参照:Google Apps Script | REFERENCE | SpreadSheet | Class Selection | Methods | getCurrentCell()

セル範囲拡張取得[getNextDataRange(方向)]

getNextDataRange(direction)
現在のセルとアクティブな範囲から開始し、指定された方向に移動して、現在のセルをカバーしたまま、範囲の適切なエッジが次のデータセルをカバーするように移動した調整範囲を返します。アクティブ範囲が方向のサイズに沿って制限されていない場合は、元のアクティブ範囲が返されます。現在のセルまたはアクティブな範囲がない場合は、nullが返されます。これは、エディタで範囲を選択してCtrl + Shift + [方向キー]を押すことと同じです。

function getNextDataRangeSample() {
  // アクティブなスプレッドシートが空白であると仮定します。
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheets()[0];

  // C3を現在のセル、C3:E5をアクティブ範囲にします。
  sheet.getRange("C3:E5").activate();
  // "C1:E3"をログに記録する
  Logger.log(SpreadsheetApp.getSelection().getNextDataRange(SpreadsheetApp.Direction.UP).getA1Notation());
}
Parameters
名前タイプ説明
directionDirection次のデータ領域エッジセルを探す方向。

Return
Range - データセルを含む調整済みの範囲。選択範囲がない場合はnull。

参照:Google Apps Script | REFERENCE | SpreadSheet | Class Selection | Methods | getNextDataRange(direction)


最後に

GASセレクション機能のまとめをご紹介させていただきました。

必要に応じて、有益な情報でさらに更新していきたいと思います。

プログラミングスキルを向上させるためには、本を読むだけでは脳にインプットされませんね。

実際に手を動かしてアウトプットしまくるのが一番の近道だと思います。

実際にサンプルソースをコピーして実行した結果がどうなるかを体験してみてください。

自分なりのアレンジを加えたり、なぜエラーになるのかを考え、何度も試行錯誤して問題を解決しまくり、着実に理解しながらスキルを向上させていきましょう。

GASはExcelVBAとはかなり違いますが、ベースとなっているJavaScriptは覚えて損はないプログラミング言語なのでショートカットキーなどと組み合わせてぜひ活用してみてください。

Googleスプレッドシート全ショートカットキー一覧はこちら↓↓↓

Googleスプレッドシートの使い方や機能がわかるショートカットキー全まとめ一覧【初心者こそ必見】
表計算ソフトとして、まだまだExcelのシェア率は高いですが、GoogleスプレッドシートにはExcelにはない超強力な関数があったり、Excelとは違って常に最新版を無料で使用できます。なにより、インターネットを使ったオンライン...

ショートカットキー一覧にもGASメソッドを載せています。どの操作からどのメソッドが呼ばれるのかイメージしてください。




コメント

//▼2023/04/08追加 //https://lovagelab.com/posts/3406/ //▲2023/04/08追加