LANG SELRCT

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

2018年2月8日木曜日

シート内でデータが入っている範囲を取得する


データが入っている範囲を取得してそのデータを取得するコードです


以下2つの方法を試しました
  • .getDataRange()で取得する
  • getRange(row, column, numRows, numColumns)で取得する


.getDataRange()で取得する


データが入っている範囲のすべてを取得する場合はこれで


コード1.gs
function get_values() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var range = sheet.getDataRange();
  var values = range.getValues();
  Logger.log(values);
}
意訳
この機能がやること
対象のシートを取得して
データが入っている範囲を取得して
値を取得して
ログに出す




選択される範囲のイメージ


コード1.gsを実行したログ


getRange(row, column, numRows, numColumns)で取得する


データが入っている範囲のすべてではなく
範囲の先頭行と先頭列を指定して取得したい場合は
以下のコード.gsの
  var start_row = 1;
  var start_col = 1;
の値を2とか3にするとその範囲を取得できます


コード2.gs
function get_values() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var last_row = sheet.getLastRow();
  var last_col = sheet.getLastColumn();
  var start_row = 2;
  var start_col = 1;
  var numRows = last_row - start_row + 1; 
  var numColumns = last_col - start_col + 1;
  var range = sheet.getRange(start_row, start_col, numRows, numColumns);
  var values = range.getValues();
  Logger.log([last_row, last_col, values]);
}
意訳
この機能がやること
対象のシートを取得して
データの入っている最終行を取得して
データの入っている最終列を取得して
対象範囲の先頭の行を指定して
対象範囲の先頭の列を指定して
対象の行数を取得して(最終行 - 先頭行だと先頭行の分が含まれないので+1する)
対象の列数を取得して(最終列 - 先頭列だと先頭列の分が含まれないので+1する)
範囲を指定して
値を取得して
ログに出す




選択される範囲のイメージ


コード2.gsを実行したログ




参考

getDataRange()
https://developers.google.com/apps-script/reference/spreadsheet/sheet#getDataRange()

getRange(row, column, numRows, numColumns)
https://developers.google.com/apps-script/reference/spreadsheet/sheet#getRange(Integer,Integer,Integer,Integer)