ARRAYFORMULAでgetLastRowがバグる件【GAS×スプレッドシート】

おはこんばんにちは、4号です。

絶賛喉痛なうです。手洗いうがいはしっかりしましょう。

今回はスプレッドシートのARRAYFORMULA関数でGASのgetLastRowメソッドがバグる件についてお話していきます。

おそらくこの2つを併用したことがある方は、この時点で何を言っているかわかる人もいると思います。

詳しく説明します。

前提

弊社ではARRAYFORMULAをこんな感じで使ってます。

水色の部分はフォームの回答の蓄積、黄色の部分がARRAYFORMULAによる計算式の展開です。

細かいことは省きますが、このような式にすることによって

新しい回答が登録されても自動で合計を計算してくれます。

便利ですよね。弊社はもうめちゃくちゃ使ってます。

問題

ただ、一点問題がございます。

このシートに対してGASでgetLastRowを行うと、、

1000!?!?

本来なら最後の値が入っている行数が出力されるので

6になるはずなのに、、

なんでだよ!!!!!

原因

これ実は前提が間違ってました。

正しくはこんな感じで展開されています。

実はあの式の書き方だと「””」という空文字が一番下まで入力されてしまうのです!!!!

それによってgetLastRowは一番下の行番号が取得されちゃうわけなんですね~

解決法

弊社の天才、浮ヶ谷が解決法を導き出しました。

それはいたってシンプルで

これを

こうするだけです。

最後の「””」こいつを消せば解決です。

「,」カンマの直後に「)」括弧閉じがくるのはなんとも不自然ですが、

こうすることで、何もない「無」を出力させることができます。

これでもう一度GASを動かすと、、

正しい数字が出力されました!!!

弊社では
・GoogleWorkspace、Gemini for GoogleWorkspaceの導入支援
・Google各アプリケーションの活用セミナー、質問サポート
などを提供しております。

ご興味ございましたらお気軽にお問い合わせください。

野村 航平

高専でC・Java、プログラミングスクールにてRuby・JavaScript・SQL・AWSなどを学習後、現在のヒカリシステムに入社。
木下さんの弟子をやらせてもらっています。

関連記事