GoogleAppsScript(GAS)でよく利用するメソッド、getLastColumn
と getMaxColumns
2つのメソッドの違いや具体的な使い方を紹介します。
前回記事
getLastColumnはデータが存在する最終列番号を返す
getLastColumnの概要
getLastColumn()
は、データが存在する最終列の列番号を返すメソッドです。データが存在しない場合は最終列の値を返しません。
特徴
- アクティブシートの最終行にある値の行番号を返します。
getLastColumn利用シーンと注意点
getLastColumn
を使用することで、データが入力されている範囲を特定し、集計や分析を行う際に必要なデータを効率的に取得できます。- 特に列方向にデータが追加される場合に役立ちます。
- データの範囲を動的に指定する際に、
getLastColumn
を利用して、スプレッドシートの最終列を基準に処理を行うことができます。 getLastColumn
は、シート内の最終列を取得する際に、誤って入力されたデータ(例えば、空白のセルに誤って値が入った場合)も考慮します。- 列の途中に空白セルがある場合、
getLastColumn
はその空白セルの前までの列を最終列として認識します。
コードサンプル
シートに記載されている値の最終列をgetLastColumn()
で取得して、メッセージに表示するサンプルを紹介します。シートに値が存在しない場合はその旨をメッセージに表示します。
function getcolumns() {
const sht = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
const lastcl = sht.getLastColumn();
const lastrw = sht.getLastRow();
// 最終列が0の場合のメッセージを設定
const message = lastcl === 0
? "シートに値がありません"
: "最終列は「" + lastcl + "」でセルは「" + sht.getRange(lastrw, lastcl).getA1Notation() + "」です";
// メッセージボックスでメッセージを表示
Browser.msgBox(message);
}
またgetLastRow()
で最終行を取得、getA1Notation()
でセル番地を取得してメッセージに表示します。
getLastRow()については以下記事を参照ください↓
getLastColumnの動作例

getMaxColumnsはデータが存在する最終列番号を返す
getMaxColumnsの概要
getMaxColumns()
は、アクティブシートの値の有無に関係なくシートの最終列を返すメソッドです。例えばシートの最終列が「30」であれば、getMaxColumns()
は" 30 "を返します。
特徴
- アクティブシートの値有無に関係なく、シートの最終列番号を返します。
getMaxColumns利用シーンと注意点
getMaxColumns
を使用することで、スプレッドシートの最大列数を把握し、必要に応じて列を追加したり削除したりする際に役立ちます。- データの入力や分析を行う際に、列数が足りない場合に自動的に列を追加するスクリプトを作成できます。
getMaxColumns
は、スプレッドシートの最大列数を返しますが、これは必ずしもデータが存在する列数を意味しません。- 実際にデータが入力されている列数を確認するには、
getLastColumn
メソッドを併用することが推奨されます。
コードサンプル
アクティブシートの最終列を取得してメッセージに表示するサンプルGASです。
function checkMaxColumns() {
const ss = SpreadsheetApp.getActiveSpreadsheet(); // アクティブなスプレッドシートを取得
const sheet = ss.getActiveSheet(); // アクティブなシートを取得
const maxColumns = sheet.getMaxColumns(); // 最大列数を取得
SpreadsheetApp.getUi().alert('シートの最大列数は "' + maxColumns + '" です。'); // アラートで表示
}
getMaxColumnsの動作例
getMaxColumns()
を使うことで、シートに値がある状態でもシートの最終行を取得していることが分かります。

getLastColumnとgetMaxColumnsの違い
getLastColumn
と getMaxColumns
の比較
項目 | getLastColumn | getMaxColumns |
---|---|---|
説明 | データが入力されている最後の列番号を取得 | シートの最大列数を取得 |
対象範囲 | データが存在する範囲のみ | シート全体 |
用途 | 実際にデータが入力されている範囲を取得 | シート全体のサイズ(列数)を確認 |
戻り値の例 | データが5列ある場合は5を返す | シートに最大で10列ある場合は10を返す |
注意点 | 空白列を含まないため、実際の列数とは異なる場合がある | データがなくても列数がカウントされる |
getLastColumn
と getMaxColumns
実際の使い分けサンプル
例1. データが入力されている列の合計を取得する(getLastColumnを使う)
以下はアクティブシートのデータが入力されているセルの最終列番号を取得して、右に1列を挿入・挿入した列の一番上セルに「挿入」と記載するGASです。
function insertColumnWithText() {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); // アクティブなシートを取得
const lastColumn = sheet.getLastColumn(); // 最終列の列番号を取得
// 最終列の右に1列を挿入
sheet.insertColumnAfter(lastColumn);
// 挿入した列の1番上のセルに「挿入」と記載
sheet.getRange(1, lastColumn + 1).setValue("挿入");
}
例2. シートの最大列数に基づいて不足列を追加する(getMaxColumns
を使う)
以下はアクティブシートの列数が30以下であれば1列を追加するGASです。一応追加するかどうかalertで確認してから処理を開始します。
function onOpen() {
const ui = SpreadsheetApp.getUi();
ui.createMenu('カスタムメニュー')
.addItem('不足列を追加', 'addMissingColumnsWithConfirmation')
.addToUi();
}
function addMissingColumnsWithConfirmation() {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); // アクティブなシートを取得
const maxColumns = sheet.getMaxColumns(); // 最大列数を取得
// 最大列数が30以下の場合、確認メッセージを表示
if (maxColumns <= 30) {
const ui = SpreadsheetApp.getUi(); // UIサービスを取得
const response = ui.alert("最大列数が30以下です。1列挿入しますか?", ui.ButtonSet.YES_NO);
// ユーザーの応答に基づいて処理を実行
if (response == ui.Button.YES) {
sheet.insertColumnAfter(maxColumns); // 最大列数の右に1列を挿入
Logger.log("1列を追加しました。");
} else {
Logger.log("処理を終了しました。");
return; // 処理を終了
}
} else {
Logger.log("追加する列はありません。");
}
}
まとめ
getLastColumn()
とgetMaxColumns()
の違いをまとめます。
getLastColumn()
:シート内でデータが存在する最終列の列番号を取得するときに使う。getMaxColumns()
:シートの最大列数を取得するときに使う。
両者の特性を理解して使い分け、より効率的にスプレッドシートを操作しましょう。