GASでスプレッドシートをDBとして扱う場合、条件に一致する行を取得する処理をよく書きますよね。
私は以前から、①sheet.getDataRange().getValues()で全データ取得 → ②findやfilterで対象データ取得 という方法で行っています。APIアクセスの回数を少なくするのはGAS高速化の鉄則ですので。
でも、データ量が多い場合getValues()にかなり時間がかかるので、1行だけ取得するのであれば、①検索対象列だけを取得 → ②findIndex(+1)で行番号を取得 → ③対象行のみgetRange().getValues()[0]で取得 のほうが速いのではないか?と思い、検証してみました。
青が全データ取得して絞込み、赤はキー列(1列)を取得 → 対象行番を特定 → 対象行の全列を取得
・・・うん。
たいして変わらないんで、今まで通り全データ取得でよさそうですね・・・。
マッチする行が増えれば増えるほど、赤は不利になりますし。
ちなみに、20カラムの行を1行取得する処理は、平均160msくらいでした。
コメント