LANG SELRCT

コードを書く場所についてはこちら

2017年12月10日日曜日

getRange()の範囲を取得してA1Notationで表示したい

シート内でデータが入っている範囲を自動で取得したくて書いたコードです


このようなシートがある時に
データが入っている最終行と最終列を取得して範囲を取得します



コード.gsを実行すると以下のように取得した範囲がログに出ます



今回の例で使ったシートのデータ

ひらがなカタカナ
あいうえおアイウエオ
かきくけこカキクケコ
さしすせそサシスセソ


コード.gs
function get_data_range() {
  var start_row = 2;
  var start_col = 1;
  
  var sh = SpreadsheetApp.getActiveSheet();
  var last_col = sh.getLastColumn();
  var last_row = sh.getLastRow();
  var num_rows = last_row - (start_row - 1);
  var num_cols = last_col - (start_col - 1);
  var range = sh.getRange(start_row, start_col, num_rows, num_cols);
  Logger.log(range.getA1Notation());
}
意訳.gs
この処理は以下を実行する
対象範囲の先頭行を指定し(例では2行目)
対象範囲の先頭列を指定し(例では1列目(A列))

対象のシートを指定して(例では今開いているシート)
データが入っている最終列を取得し
データが入っている最終行を取得し
対象の行の数を取得し
対象の列の数を取得し
2行目の、1列目から、対象の行数、対象の列数を範囲に指定して
A1表記でログに出す



getRange("A2:B4")

のように直接範囲を指定するやり方だと
行や列が増えた時に範囲を再設定する必要があり
大体の場合でA2以降に入力されているすべての行・列を範囲に設定し直しているので
今回はそれを自動化でやるコードを書きました