1
2

More than 3 years have passed since last update.

GAS 特定の列の最終行番号を取得する

Last updated at Posted at 2020-03-19

とにかくめんどくさいので自作。
普通にちゃんと全ての行を埋めてくれるようなスプレッドシートだったらもっと簡単に書けるが、
所々空の行が挿入されていたり、穴ぼこがたくさんあるときにうまく取得できない時がある。
そんなときにこれが使えそう。

var headers = speadersheet.getDataRange().getValues()[1]

// 列とか変更されると辛いので、動的に常に列番号を取得
function getColumnRow(columnName) {
  return header.map(function(h) {
    return h.replace(/\r?\n/g, '')
  }).indexOf(columnName)
}

function getAlphabets() {
  return 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.split('')
}

// 特定のカラムの最終行を取得
function getLastRowByColumn(columnName) {
  var index = getColumnRow(columnName)
  var alph = getAlphabets()[index]
  var range = alph+':'+alph
  var rangeData = sheet.getRange(range).getValues()
  return rangeData.filter(function(data) {
    return data[0]
  }).length
}
  1. 指定の列名で列番号を取得する
  2. それがアルファベットの配列の中でどこに配置されているか
  3. A:Aみたいにrangeを作成する
  4. A:A列の値を前取得
  5. 空を排除
  6. 配列の大きさを返せばそれが最終行(などにヘッダーが複数行で構成されていたら、5で減るので帳尻合わせ)
1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2