おはこんばんにちは、4号です。
絶賛喉痛なうです。手洗いうがいはしっかりしましょう。
今回はスプレッドシートのARRAYFORMULA関数でGASのgetLastRowメソッドがバグる件についてお話していきます。
おそらくこの2つを併用したことがある方は、この時点で何を言っているかわかる人もいると思います。
詳しく説明します。
前提
弊社ではARRAYFORMULAをこんな感じで使ってます。
水色の部分はフォームの回答の蓄積、黄色の部分がARRAYFORMULAによる計算式の展開です。
細かいことは省きますが、このような式にすることによって
新しい回答が登録されても自動で合計を計算してくれます。
便利ですよね。弊社はもうめちゃくちゃ使ってます。
問題
ただ、一点問題がございます。
このシートに対してGASでgetLastRowを行うと、、
1000!?!?
本来なら最後の値が入っている行数が出力されるので
6になるはずなのに、、
なんでだよ!!!!!
原因
これ実は前提が間違ってました。
正しくはこんな感じで展開されています。
実はあの式の書き方だと「””」という空文字が一番下まで入力されてしまうのです!!!!
それによってgetLastRowは一番下の行番号が取得されちゃうわけなんですね~
解決法
弊社の天才、浮ヶ谷が解決法を導き出しました。
それはいたってシンプルで
これを
こうするだけです。
最後の「””」こいつを消せば解決です。
「,」カンマの直後に「)」括弧閉じがくるのはなんとも不自然ですが、
こうすることで、何もない「無」を出力させることができます。
これでもう一度GASを動かすと、、
正しい数字が出力されました!!!
弊社では
・GoogleWorkspace、Gemini for GoogleWorkspaceの導入支援
・Google各アプリケーションの活用セミナー、質問サポート
などを提供しております。
ご興味ございましたらお気軽にお問い合わせください。