プログラミング エンジニア全般

【GAS】getLastRow()が正しく動作しないときの原因と対策

スポンサーリンク

こんにちは!

今回は「GASでgetLastRow()が正しく動作しないときの原因と対策」についてお伝えしたいと思います。

GASでgetLastRow()は入力のある最後の行数が返ってくると思うのですが、期待する行数が返ってこないことがあるようです。(後ほど詳しくまとめます)

普段Javascript(Node.js) で環境している人がGASを使っていると不便さを感じてしまう今日このごろです。

GASでgetLastRow()が正しく動作しないときの原因

先に結論から...

原因はセルに関数が含まれていたからでした。

以下のように、見た目上は空が設定されていても、getLastRow()の結果は3ではなく、9が返却されてしまいます。

// GAS
const allSheet = spreadsheet.getSheets(); // シートすべて取得
const sheet = allSheet[0] // 1シート目のシートを取得
const lastRow = sheet.getLastRow(); // 最後の行数を取得
console.log(lastRow); // 9

 

対策:getNextDataCell(SpreadsheetApp.Direction.DOWN)を使う

getLastRow()は使わず、getNextDataCell(SpreadsheetApp.Direction.DOWN)を使うことで解決しました。

上記コードの修正verになります。

// GAS
const startColumn = 1;
const firstCulumnRange = sheet.getRange(1, 2).getNextDataCell(SpreadsheetApp.Direction.DOWN); // B列で入力のある最終行を取得
const lastRow = firstCulumnRange.getRow();
console.log(lastRow); // 3

期待通り、関数を除く最終行を取得することができました。

参考

初心者でもわかるGoogle Apps Script活用のススメ

以上、お疲れさまでした〜🍵

スポンサーリンク

-プログラミング, エンジニア全般
-

© 2022 エンジニア×ライフハック Powered by AFFINGER5