とにかくめんどくさいので自作。
普通にちゃんと全ての行を埋めてくれるようなスプレッドシートだったらもっと簡単に書けるが、
所々空の行が挿入されていたり、穴ぼこがたくさんあるときにうまく取得できない時がある。
そんなときにこれが使えそう。
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
}
- 指定の列名で列番号を取得する
- それがアルファベットの配列の中でどこに配置されているか
- A:Aみたいにrangeを作成する
- A:A列の値を前取得
- 空を排除
- 配列の大きさを返せばそれが最終行(などにヘッダーが複数行で構成されていたら、5で減るので帳尻合わせ)