GASを使ってスプレッドシートのプログラムを組んでいるときに、getNextDataCell(SpreadsheetApp.Direction.DOWN)
でエラーが発生。
数式は合っていて、テスト時などこれまでは普通にできていたのに、急にできなくなってしまったという時の対処法についてまとめています。
エラー内容
例えば、以下のように単純にセルを指定して、getNextDataCellを使ってデータがある最下部を取得する数式を実行します。
endRow = sheet.getRange(startRow, startCol).getNextDataCell(SpreadsheetApp.Direction.DOWN).getRow();
すると、次のようなエラーが発生します。
エラーの実例
エラー
Exception: Invalid argument
fxCopy @ TEST.gs:13
エラーの原因
エラーの原因はとても簡単です。
原因はgetNextDataCellの開始位置となっているセルが非表示になっていることです。
以下の数式でいうと、getRange(startRow, startCol)
の部分です。
endRow = sheet.getRange(startRow, startCol).getNextDataCell(SpreadsheetApp.Direction.DOWN).getRow();
スプレッドシートを確認すると以下のように非表示になっていると思います。
以下の例だと開始位置は13行目なのに、13行目が非表示になっています。

対処法
非表示だとgetNextDataCellが機能しないので、非表示ではなく最小化します。(ドラッグでぐっと縮める)

これで数式を実行すればエラーが発生することなく、処理を行うことができます。