問題点Google スプレッドシートは無制限ではありません。すべてのワークブックには、1,000万セルという厳格な上限があります。これは膨大な数字に聞こえるかもしれませんが、すべてのタブに含まれるすべてのセル(完全に空のセルも含む)がカウントされます。
大規模なCSVのインポート、膨大なデータセットの貼り付け、または新しい行を生成するスクリプトの実行時に、この壁に突き当たることがよくあります。制限に達すると、Googleはセルを1つ追加する操作さえもブロックし、次のようなイライラさせるエラーを表示します:
This action would increase the number of cells in the workbook above the limit of 10000000 cells
ワークブックが肥大化する理由ほとんどのユーザーは、実際には1,000万行ものデータを持っていません。代わりに、「空白スペースによる肥大化」の犠牲になっています。新しいタブを作成すると、Google スプレッドシートはデフォルトで1,000行を作成します。シートに26列(AからZ)ある場合、それだけで瞬時に26,000セルになります。そのようなタブを40個追加すると、一文字も入力しないうちに、すでに100万セルを使い果たしたことになります。
自動化もよくある原因の一つです。多くのスクリプトは、末尾の空の行を整理せずにシートの最後にデータを追加するため、上限に達するまでグリッドが無制限に拡大し続けます。
ステップバイステップの解決策### 1. セルの使用状況を確認する目に見えないものは修正できません。データを削除し始める前に、どの特定のタブがリソースを消費しているかを特定する必要があります。50列と200,000行を持つシートは、それだけで1,000万セルの制限に達してしまいます。
原因を特定するには、拡張機能 > Apps Script に移動し、次のスニペットを貼り付けてください:
function checkCellCount() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheets = ss.getSheets();
var totalCells = 0;
sheets.forEach(function(sheet) {
var rows = sheet.getMaxRows();
var cols = sheet.getMaxColumns();
var cellCount = rows * cols;
totalCells += cellCount;
Logger.log(sheet.getName() + ": " + cellCount.toLocaleString() + " cells (" + rows + "x" + cols + ")");
});
Logger.log("TOTAL WORKBOOK CELLS: " + totalCells.toLocaleString());
}
関数を実行し、実行ログを開きます。これにより、すべてのタブとその総セル数の明確なリストが表示され、どこに重点を置いて整理すべきかが正確にわかります。
2. 未使用の行と列を削除する「不要な負荷」を削ぎ落とすことが、エラーを解決する最も早い方法です。データが2,000行目で終わっているのに、シートが50,000行目まである場合、48,000行分の潜在的なスペースを無駄にしています。
- データの下の最初の空の行の行番号をクリックします。- Ctrl + Shift + 下矢印キー(Macの場合は Cmd + Shift + 下矢印)を押して、一番下まですべて選択します。- 右クリックして行を削除を選択します。- データの右側にある未使用の列に対しても、Ctrl + Shift + 右矢印キーを使用してこのプロセスを繰り返します。### 3. スクリプトでクリーンアップを自動化する30個もの異なるタブを手動でクリーンアップするのは面倒です。このスクリプトは、ワークブック内のすべてのシートを自動的にトリミングし、実際のデータが含まれている領域のみにグリッドのサイズを調整します。
function trimAllSheets() {
var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();
sheets.forEach(function(sheet) {
var lastRow = sheet.getLastRow();
var maxRow = sheet.getMaxRows();
var lastColumn = sheet.getLastColumn();
var maxColumn = sheet.getMaxColumns();
if (maxRow > lastRow && lastRow > 0) {
sheet.deleteRows(lastRow + 1, maxRow - lastRow);
}
if (maxColumn > lastColumn && lastColumn > 0) {
sheet.deleteColumns(lastColumn + 1, maxColumn - lastColumn);
}
});
}
4. 重いデータを BigQuery に移行する本当に1,000万行を分析する必要がある場合、Google スプレッドシートはもはや適切なツールではありません。スプレッドシートは計算や共同作業のために設計されており、大量のデータ保存用ではありません。セルの制限に達するずっと前に、パフォーマンスが著しく低下します。
BigQuery 用の コネクテッド シート の使用を検討してください。これにより、ピボットテーブルやグラフを作成するために慣れ親しんだ Google スプレッドシートのインターフェースを使用しながら、数百万行のデータをデータベースに保存できます。データはクラウドにあるため、1,000万セルの制限にはカウントされません。

