filter()……指定した範囲のうち、カッコ内の形式のデータのみ選択
length……選択したデータの個数を取得
この2つを用いることで、指定した範囲に欲しい形式のデータが何個あるかがわかります。つまり、行数をカウントするときに、空白や、そぐわない形式をカウントしたくなければ、こちらを使うことになります。
一方、空白も含めて、最終行が何行目かを調べるためには、getLastRowを使います。二種類あるそうです。
sheet.getLastRow()は、シート全体の最終行が何行目であるかを返します。一見空白に見えても、関数が実行されているセルはカウントされてしまうらしいです……。おかしいと思ったら確認してみてください。
range.getLastRow()は指定したセル範囲の最終行を返します。getDataRange()と併せて使っても、データの入っているセルの最終行を求められるわけです。