メディア掲載: レバテックフリーランス様のサイトで当ブログが紹介されました

GAS: スプレッドシートから対象行データを取得する速度の検証

GASでスプレッドシートをDBとして扱う場合、条件に一致する行を取得する処理をよく書きますよね。

私は以前から、①sheet.getDataRange().getValues()で全データ取得 → ②findfilterで対象データ取得 という方法で行っています。APIアクセスの回数を少なくするのはGAS高速化の鉄則ですので。

でも、データ量が多い場合getValues()にかなり時間がかかるので、1行だけ取得するのであれば、①検索対象列だけを取得 → ②findIndex(+1)で行番号を取得 → ③対象行のみgetRange().getValues()[0]で取得 のほうが速いのではないか?と思い、検証してみました。

1行あたり20列で、行数は5,000行~10,0000行まで所要時間(ミリ秒)を計測してみた。
が全データ取得して絞込み、はキー列(1列)を取得 → 対象行番を特定 → 対象行の全列を取得

・・・うん。

たいして変わらないんで、今まで通り全データ取得でよさそうですね・・・。
マッチする行が増えれば増えるほど、は不利になりますし。

ちなみに、20カラムの行を1行取得する処理は、平均160msくらいでした。

コメント

タイトルとURLをコピーしました