GASでスプレッドシートのCtrl+Shift+方向キーを押した範囲を取得するには「
」を利用する。getNextDataRange(direction)
getNextDataRange(direction)
https://developers.google.com/apps-script/reference/spreadsheet/selection?hl=en#getnextdatarangedirection
current cellおよびactive rangeから開始して指定された方向に移動すると、現在のセルをカバーしながら、範囲の適切なエッジがシフトされてカバーするように調整された範囲が返されます。next data cellアクティブ範囲が方向に沿って無制限である場合dimention、元のアクティブ範囲が返されます。現在のセルまたはアクティブ範囲がない場合は、nullが返されます。これは、エディターで範囲を選択してを押すのと同じCtrl+Shift+[arrow key]です。
getNextDataRange(direction)の戻り値
Range—データセルを含む調整された範囲、またはnull選択がない場合
getNextDataRange(direction)のパラメーター
名前 | タイプ | 説明 |
---|---|---|
direction | 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)を使って、以下動作をテキストにして表現しました。
- 最初にB2:C5を選択して
- Ctrl+Shift+↓を押下した状態の範囲を取得
まとめ
GAS×スプレッドスプレッドシートでctrl+Shift+方向キーを押した範囲を取得するには、getNextDataRange(direction)を使いましょう。
【GAS】スプレッドシートで指定範囲をアクティブシートの選択セルに設定する
【GAS】スプレッドシートでアクティブな範囲のリストを取得する