Google Sheetsが「Loading...」のまま固まる — シート間でデータがリアルタイムに更新されない問題を修正

intermediate📗 Google Sheets2026-03-21| Google Sheets(ウェブブラウザ:Chrome、Firefox、Safari、Edge)— Google Workspace / 個人用Googleアカウント

Error Message

Loading...
#google-sheets#sync#refresh#performance

TL;DR

永遠に続くLoading...スピナーは、通常IMPORTRANGEQUERY、またはARRAYFORMULAなどの数式が別のシートからデータを取得または更新できないことを意味します。最速の3つの解決策:セルをクリックしてアクセスを許可をクリックしてIMPORTRANGEを再認証する、再計算をファイル → 設定 → 変更時および毎分に切り替える、またはCtrl+Shift+R / Cmd+Shift+Rでタブを強制リフレッシュする。

実際に何が起きているか

Google スプレッドシートにはスプレッドシート間のネイティブなプッシュ同期機能がありません。すべてはプルベース — 数式がオンデマンドでデータを取得しに行きます。そのため、画面上でLoading...が固まっているとき、数式はデータ取得の途中で止まっています。主に6つの原因が考えられます:

  • IMPORTRANGE が未認証 — ソーススプレッドシートがまだアクセスを許可していません。数式はただ待ち続けます。永遠に。
  • 再計算が「変更時のみ」に設定されている — シートを編集しない限り、Sheets は外部データを再取得しません。
  • 循環参照 — シートAがシートBを参照し、シートBがシートAを参照している。評価がループして固まります。
  • クォータ超過 — Google は IMPORTRANGE をスプレッドシートあたり50件のクロススプレッドシート参照に制限しています。この上限に達すると、余分なセルが固まったままになります。
  • ブラウザキャッシュの古さ — Sheets の Web アプリがキャッシュされた壊れた状態を読み込みます。思っている以上によく起こります。
  • ソースシートの削除またはアクセス失効 — IMPORTRANGE が接続を失ってもエラーは表示されません。ただLoading...になるだけです。

修正1:IMPORTRANGE アクセスの再認証

まずここから試しましょう — 約70%の問題はこれで解決します。Loading...または#REF!が表示されているセルをクリックします。アクセスを許可を求めるポップアップが表示されるはずです。ポップアップが表示されない場合は次の手順を実行します:

=IMPORTRANGE("https://docs.google.com/spreadsheets/d/SOURCE_SHEET_ID/edit", "Sheet1!A1:D100")
  • セルから数式を削除します。
  • 数式を貼り直してEnterを押します。
  • セルを再度クリックすると、今度はアクセスを許可が表示されるはずです。
  • クリックします。数秒でデータが読み込まれます。

認証はソースと宛先のペアごとに一度だけ必要なハンドシェイクです。アクセスが失効しない限り、再実行する必要はありません。

修正2:再計算設定の変更

デフォルトでは、Sheets は編集を加えたときのみ再計算します。つまり、誰もシートを触らなければ、IMPORTRANGE の数式は何時間も古いデータのままになります。自動的に更新されるように切り替えましょう:

  • 宛先スプレッドシートを開きます。
  • ファイル → 設定に移動します。
  • 計算タブで、再計算変更時から変更時および毎分に変更します。
  • 設定を保存をクリックします。

毎分がSheetsがネイティブでサポートする最速の間隔です。もっと速い更新が必要な場合は修正5に進んでください。

修正3:ブラウザタブの強制リフレッシュ

キャッシュが古くなると、実際には正常な数式でも壊れているように見えることがあります。通常のリフレッシュ(F5)では不十分です — キャッシュを完全にバイパスする必要があります:

  • Windows/Linux: Ctrl+Shift+R
  • macOS: Cmd+Shift+R

その後シートが正常に読み込まれた場合、キャッシュが原因でした。ついでに、ブラウザ拡張機能も無効にしましょう — 広告ブロッカーやプライバシーツールは、Google Workspace のリクエストを頻繁にインターセプトして静かに壊してしまいます。

修正4:循環参照の確認

循環参照はやっかいです。Excelとは異なり、Sheetsは目に見えるエラーを常に表示するわけではありません — ただLoading...のまま固まります。追跡する方法は次のとおりです:

  • ツール → エラーを確認(お使いのバージョンで利用可能な場合)に移動するか、数式のチェーンを手動でトレースします。
  • シートAの数式がシートBを参照し、シートBがシートAを参照していないか確認します。

静的な値を持つヘルパー列を導入してループを断ち切りましょう。またはデータフローを再構成して、一方向のみに流れるようにします — ソースが宛先にデータを送るだけで、逆方向には流れないようにします。

修正5:リアルタイム同期のために IMPORTRANGE を Apps Script に置き換える

IMPORTRANGE の更新は最大で毎分1回です。より速いリフレッシュが必要なダッシュボードやデータパイプラインには、時間駆動トリガーを使った Apps Script の方がはるかに適しています:

// 宛先スプレッドシートで → 拡張機能 → Apps Script
function syncFromSource() {
  const sourceId = 'YOUR_SOURCE_SPREADSHEET_ID';
  const sourceSheet = SpreadsheetApp.openById(sourceId).getSheetByName('Sheet1');
  const destSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Destination');

  const data = sourceSheet.getRange('A1:D100').getValues();
  destSheet.getRange('A1:D100').setValues(data);
}

スケジュールで実行するトリガーを設定します:

  • Apps Script エディタで、トリガー(左サイドバーの時計アイコン)をクリックします。
  • トリガーを追加 → syncFromSource → 時間主導型 → 分タイマー → 毎分。
  • 保存します。スクリプトは独立して実行されます — ブラウザのタブを開いたままにする必要はありません。

このアプローチは、IMPORTRANGE の50セルのクォータを回避し、ネイティブ数式よりもはるかに確実に大規模なデータセット(5,000行以上)を処理できます。

修正6:IMPORTRANGE の制限内に収める

Google は IMPORTRANGE をスプレッドシートあたり50件のクロススプレッドシート参照に制限しています。超過すると、溢れたセルは説明なしにLoading...のまま固まります。次のスクリプトで使用数を確認しましょう:

function countImportRange() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet();
  const allSheets = sheet.getSheets();
  let count = 0;
  allSheets.forEach(s => {
    const formulas = s.getDataRange().getFormulas().flat();
    count += formulas.filter(f => f.toUpperCase().includes('IMPORTRANGE')).length;
  });
  Logger.log('Total IMPORTRANGE cells: ' + count);
}

50を超えている場合は統合しましょう。ソースシート全体の列AからZなど、広い範囲を単一の IMPORTRANGE で取得し、QUERY や INDEX/MATCH を使って各セクションに必要なデータだけを抽出します。1回のインポートで複数の利用者に対応できます。

修正の確認

  • Loading...が表示されていたセルに実際のデータが表示されるようになった。
  • ソースシートの値を編集し、最大60秒待つと — 宛先が自動的に更新される。
  • 対象範囲に#REF!#ERROR!Loading...のセルが残っていない。
  • Apps Script を使用している場合は、拡張機能 → Apps Script → 実行数を確認して、同期関数がスケジュールどおりに失敗なく実行されていることを確認する。

クイックリファレンス

  • IMPORTRANGE が固まる → セルをクリック → アクセスを許可
  • データが自動更新されない → ファイル → 設定 → 再計算:毎分
  • ブラウザの不具合 → Ctrl+Shift+R / Cmd+Shift+R(強制リフレッシュ)
  • 循環参照 → 数式のループをトレースして断ち切る
  • IMPORTRANGE セルが50を超えている → より少ない範囲の QUERY で統合する
  • 1分より速い同期が必要 → 時間駆動トリガーを使った Apps Script

Related Error Notes