スプレッドシートにはセルの数に制限があるのをご存知でしょうか?
2022年9月現在、スプレッドシートは1ファイルにつき1000万セルまでしか作ることができません(昔は200万セルだった)。
当記事ではスプレッドシートのセルを大事に使いたい人のため、
- GASで空白行を自動削除する方法
- GASで空白列を自動削除する方法
について解説します。
GASで空白行を自動削除する方法
まず、GASで空白行を自動削除する方法について解説します。
基本的なアルゴリズム
空白行の自動削除は、以下のようなアルゴリズムで処理します。
- 実行するシートを指定する
- 最終行の値を取得する
- 最終行までのfor文を作る
- セル値が空白か判定する
- 空白ならその行を削除する
- for文のカウントを-1する
※最後にカウント変数を-1するのは、行削除を実行した時点でシートの行の順番が1ずれるためです。
サンプルコード(コピペ推奨)
空白行を自動削除してくれるスクリプトのサンプルコードを載せておきます。
コピペしたらすぐ動くようになっているので、ぜひお試しください。
function removeRows{
//①実行するシートを指定する
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spreadsheet.getSheetByName('<シート名>');
//②最終行の値を取得する
var lastRow = sheet.getLastRow();
//③最終行までのfor文を作る
for(var i=1; i<=lastRow; i++){
//④セル値が空白か判定する
var cell = sheet.getRange(i,1);
if(cell.isBlank){
//⑤空白ならその行を削除する
sheet.deleteRow(i);
}
//⑥for文のカウントを-1する
i++;
}
GASで空白列を自動削除する方法
続いて、GASで空白行を自動削除する方法について解説します。
基本的なアルゴリズム
空白列を自動削除するアルゴリズムですが、基本的には空白行の自動削除とやることは変わりません。
空白列の自動削除は以下のようなアルゴリズムで処理します。
- 実行するシートを指定する
- 最終列の値を取得する
- 最終列までのfor文を作る
- セル値が空白か判定する
- 空白ならその列を削除する
- for文のカウントを-1する
サンプルコード(コピペ推奨)
空白行と同じように、空白列を自動削除してくれるスクリプトのサンプルコードを載せておきます。
こちらもコピペしたらすぐ動くので、ぜひお試しください。
function removeColumns{
//①実行するシートを指定する
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spreadsheet.getSheetByName('<シート名>');
//②最終列の値を取得する
var lastColumn = sheet.getLastColumn();
//③最終列までのfor文を作る
for(var j=1; j<=lastColumn; j++){
//④セル値が空白か判定する
var cell = sheet.getRange(1,j);
if(cell.isBlank){
//⑤空白ならその列を削除する
sheet.deleteColumn(j);
}
//⑥for文のカウントを-1する
j--;
}
おまけ:行と列を同時に削除
最後におまけで、空白の行と列を同時に削除してくれるスクリプトを載せておきます。
使い道がありそうなら、ぜひご使用ください。
function removeColumns{
//①実行するシートを指定する
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spreadsheet.getSheetByName('<シート名>');
//②最終行と最終列の値を取得する
var lastRow = sheet.getLastRow();
var lastColumn = sheet.getLastColumn();
//③最終行までのfor文を作る
for(var i=1; i<=lastRow; i++){
//④セル値が空白か判定する
var cell = sheet.getRange(i,1);
if(cell.isBlank){
//⑤空白ならその列を削除する
sheet.deleteRow(i);
}
//⑥for文のカウントを-1する
i--;
}
//③最終列までのfor文を作る
for(var j=1; j<=lastColumn; j++){
//④セル値が空白か判定する
var cell = sheet.getRange(1,j);
if(cell.isBlank){
//⑤空白ならその列を削除する
sheet.deleteColumn(j);
}
//⑥for文のカウントを-1する
j--;
}
}
まとめ
今回は「GASで空白行を自動削除する方法」「GASで空白列を自動削除する方法」について解説しました。
余分な空白やデータはそれだけで容量をくってしまうので、極力つくらず、定期的に削除することをおすすめします(余白によって見やすくなる場合は別ですが)。
当記事で紹介したサンプルコードはコピペすればすぐに使えるので、気になった方は無断で使用いただいて大丈夫です。
では、また。