IMPORTRANGEで他ファイルを参照するスプレッドシートが重い場合、まず読み込む範囲の大きさと、参照が何段つながっているかを調べます。公式ヘルプは、読み込み範囲の縮小、取り込み元での事前集計、IMPORTRANGEの連鎖の制限を推奨しています。権限不足の#REF!などは負荷と別の問題です。
読み込みセル数と参照先の数を調べる
次の式を例にします。
=IMPORTRANGE("参照元スプレッドシートのURL","明細!A:Z")
全列A:Zを指定すると、必要以上に多くの列や空白行を対象にする可能性があります。実際に使うのがA列の案件番号とF列の状態だけなら、取り込み元側で必要列をまとめた小さな範囲を作る方が改善候補になります。
最初に、参照先ファイル数、各式が指定するシート名と範囲、読み込んだ結果の列数・行数を一覧にしてください。目的の値が最新でない問題と読み込みが終わらない問題も分けて記録します。
外部参照の多段連鎖を可視化する
参照元A→集計用B→報告用Cという3段構造なら、Aが変わった後でBが計算し、その結果をCが取り込む必要があります。公式ヘルプは、連鎖を増やすと反映までの遅延が大きくなる場合があると説明しています。
A→B→Cの関係を図にし、同じAを複数のBから何度も取り込んでいないか調べます。循環しているA→B→Aの参照があれば解消対象です。単にCの更新ボタンを探すのではなく、依存関係を整理してください。
必要な列・行だけを扱う設計
改善案は、必要な列と期間を限定することです。
=IMPORTRANGE("参照元スプレッドシートのURL","集計用!A1:D500")
ただし、行数を500に固定して501行目以降を取りこぼすと業務上の損失になります。参照元に必要な集計用シートを作り、範囲を削っても必要レコードを落とさないことを確認します。
Google公式によると、IMPORTRANGEはリクエストごとの受信データ上限が10MBです。範囲を縮小する意義は上限回避と転送量削減ですが、10MB未満なら必ず速いとは限りません。参照元側で集計済みの表を用意して転送量を減らす方法も検討します。
更新頻度と結果の一致を確認する
改善前後で、参照元の更新時刻、読み込み先で数値が一致した時刻、対象件数を記録します。例えば元のレコードが1,000件なら、改善後も必要な1,000件が集計に反映されているかを確認します。
運用上は直ちに同期される仕組みではないことを前提にし、リアルタイム性が必須なら別のデータ連携方式が必要か検討してください。権限が切れた場合にはアクセス許可の確認が必要ですが、権限の問題と転送サイズの問題を混同しないでください。
