GASでスプレッドシート指定列の最終行を取得する方法を紹介します!
スプレッドシートでの最終列の取得といえばgetLastColumnですが、それで取得できるのはシート全体の最終列のみです。
今回紹介する方法なら、指定列の最終行が取得できるので、ぜひ使ってみてください!
スプレッドシートの指定行の最終列を取得する方法
下のコードを使えば指定行の最終列を取得できます。
今回はlastColumnに指定行の最終列を取得しています。
「シート名」と「行:行」は実行する環境に合わせて変更してください。
const spreadSheet = SpreadsheetApp.getActiveSpreadsheet();
const testSheet = spreadSheet.getSheetByName('シート名'); //取得したいシート名を入力
const lastColumn = testSheet.getRange('行:行').getValues().flat().filter(String).length; //取得したい行を入力(2行目の場合'2:2')
function number() {
console.log(lastColumn);
}
コードの解説
1行目と2行目はお決まりの記述なので省略し、3行目から解説します。
最初に、getRangeで最終列を取得したい行の全体を取得します。
次に、getValuesで行全体の値を取得します。この時点では、行数がシート全体の行数と同じ1次元配列が取得されています。
続いて、flatで取得した2次元配列を1次元配列に変換します。この時点で、行全体のセルの値が1次元配列で取得できています。
そして、filter(String)で配列の中から空白の要素(空白のセルとほぼ同じ)を除きます。
最後に、lengthで配列の長さ(データの個数)を取得します。
上のコードではnumberという関数を実行すれば、指定行の最終列の列数を出力できます。
(注)最終行までに空白を含む行では正しく動作しません。
以上、スプレッドシートで指定行の最終列を取得する方法でした!
指定列の最終行を取得する方法も別記事で紹介してますので、知りたい方はぜひ読んでみてください!
ちなみに、指定列の最終行を取得する方法は今回紹介したものとほとんど同じですが、指定列の最終行を取得する場合にはflatが不要になります。
getRangeで取得する2次元配列の理解を深めるためにも、なぜ指定列の最終行の場合はflatが不要で、指定行の最終列の場合にはflatが必要なのか、考えてみてください!