セルを操作する

【GAS】スプレッドシートでCtrl+Shift+方向キーを押した範囲を取得する

GASでスプレッドシートのCtrl+Shift+方向キーを押した範囲を取得するには「getNextDataRange(direction) 」を利用する。

getNextDataRange(direction)
current cellおよびactive rangeから開始して指定された方向に移動すると、現在のセルをカバーしながら、範囲の適切なエッジがシフトされてカバーするように調整された範囲が返されます。next data cellアクティブ範囲が方向に沿って無制限である場合dimention、元のアクティブ範囲が返されます。現在のセルまたはアクティブ範囲がない場合は、nullが返されます。これは、エディターで範囲を選択してを押すのと同じCtrl+Shift+[arrow key]です。

https://developers.google.com/apps-script/reference/spreadsheet/selection?hl=en#getnextdatarangedirection

getNextDataRange(direction)の戻り値

Range—データセルを含む調整された範囲、またはnull選択がない場合

getNextDataRange(direction)のパラメーター

名前タイプ説明
directionDirection次のデータ領域のエッジセルを見つける方向。
getNextDataRange(direction)のパラメーター

スプレッドシートでCtrl+Shift+方向キーを押した範囲を取得するGAS

function myFunction() {
  // アクティブスプレッドシートを返します
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  //アクティブなシートを取得します。
  var sht = ss.getActiveSheet();
  //最初のアクティブ範囲を指定します
  var rng = "B2:C5";
  //rngのセル範囲をアクティブに
  sht.getRange(rng).activate()
  //getNextDataRnage()でctrl+Shift+↓をクリックした操作を行いA1形式でアクティブにした範囲を取得
  var actrng = SpreadsheetApp.getSelection().getNextDataRange(SpreadsheetApp.Direction.DOWN).getA1Notation();
  //最初にセットしたセル範囲を記述します
  sht.getCurrentCell().setValue("初めにセットしたセル範囲は"+rng+"です")
  //getNextDataRange()でアクティブになった範囲を記述します
  sht.getCurrentCell().offset(1,0).setValue("範囲を保持したまま下まで移動して選択した範囲は"+actrng+"です");
}

スプレッドシートでCtrl+Shift+方向キーを押した範囲を取得するGAS実行の様子

getNextDataRange(direction)を使って、以下動作をテキストにして表現しました。

  1. 最初にB2:C5を選択して
  2. Ctrl+Shift+↓を押下した状態の範囲を取得
getNextDataRange(direction)

まとめ

GAS×スプレッドスプレッドシートでctrl+Shift+方向キーを押した範囲を取得するには、getNextDataRange(direction)を使いましょう。

【GAS】スプレッドシートの現在の値を返す

【GAS】スプレッドシートでアクティブなシートを返す

【GAS】スプレッドシートでアクティブなシートを取得する

【GAS】スプレッドシートで指定範囲をアクティブシートの選択セルに設定する

【GAS】スプレッドシートでアクティブな範囲のリストを取得する

【GAS】スプレッドシートの選択された範囲を取得する

【GAS】スプレッドシートのアクティブなセルを取得するgetCurrentCell編

【GAS】スプレッドシートのアクティブなセルを取得する

-セルを操作する