Google Apps Script (GAS) を使ってスプレッドシートを自動化する際、シートの見た目を整える「セル配置」の制御は欠かせません。手作業では手間がかかるセルの左寄せ、中央寄せ、右寄せといった水平配置も、GASの getHorizontalAlignment() メソッドを使えばプログラムで自在に操作・管理できます。
本記事では、getHorizontalAlignment() の基本的な使い方から、セルの配置を取得・設定する setHorizontalAlignment() との連携、さらにデータ型に応じた自動整形、シート全体の配置状況の分析まで、実践的なコード例を交えて徹底解説します。見やすく、管理しやすいスプレッドシートをGASで自動作成・維持し、作業効率を大幅に向上させましょう。

スプレッドシートにおけるセルの水平配置とは?
スプレッドシートでは、セルの見栄えを整えるためにテキストを「左寄せ」「中央寄せ」「右寄せ」に設定します。この操作は手動でも行えますが、GASを利用することで、特定のルールに基づいて自動で配置を適用できます。
getHorizontalAlignment() メソッドは、指定したセルの現在の水平方向の配置がどのような状態かを取得するためのものです。これにより、プログラム上でセルの配置を確認し、その後の処理に活かすことが可能になります。
getHorizontalAlignment() の基本的な使い方
まず、getHorizontalAlignment() メソッドの基本的な構文と戻り値について説明します。
メソッドの構文
const alignment = Range.getHorizontalAlignment();
このメソッドは Range オブジェクトに対して使用し、戻り値として配置状態を示す文字列を返します。
戻り値の種類
getHorizontalAlignment() が返す文字列は以下の通りです。
left: セルが左寄せに設定されています。center: セルが中央寄せに設定されています。right: セルが右寄せに設定されています。general: デフォルトの配置です。通常、数値は右寄せ、テキストは左寄せになります。
実践的なサンプルコード
それでは、実際のコードで使い方を見ていきましょう。
単一セルの配置を取得する
特定のセルの配置を取得するシンプルな例です。
function checkCellAlignment() {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('シート名');
const cell = sheet.getRange('A1');
const alignment = cell.getHorizontalAlignment();
// 取得した配置をログに出力
Logger.log(`A1セルの水平配置は「${alignment}」です。`);
}
このスクリプトを実行すると、指定した A1 セルの現在の配置(例: left, center)がログに表示されます。
条件に応じてセルの配置を自動で変更する
getHorizontalAlignment() と setHorizontalAlignment() を組み合わせることで、より実用的な処理が実現できます。
例えば、範囲内のデータ型に応じて、数値なら右寄せ、文字列なら左寄せに自動で整形するスクリプトを作成してみます。
function formatCellAlignment() {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('データシート');
const range = sheet.getRange('B2:F20');
const values = range.getValues();
for (let i = 0; i < values.length; i++) {
for (let j = 0; j < values[i].length; j++) {
const cell = range.getCell(i + 1, j + 1);
const cellValue = values[i][j];
// データ型に応じて配置を設定
if (typeof cellValue === 'number') {
cell.setHorizontalAlignment('right');
} else if (typeof cellValue === 'string') {
cell.setHorizontalAlignment('left');
}
}
}
}
このコードは、指定した範囲 (B2:F20) 内の各セルをチェックし、値が数値であれば右寄せ、文字列であれば左寄せに自動で設定します。これにより、手作業で配置を修正する手間が省け、統一感のあるシートを作成できます。
シート全体の配置状況を分析する
getHorizontalAlignments() (複数形) を使うと、指定範囲全体の配置情報を二次元配列として一度に取得できます。これを利用して、シート内で各配置がいくつ使われているかを分析してみましょう。
function analyzeAlignments() {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('売上データ');
const range = sheet.getDataRange();
const alignments = range.getHorizontalAlignments();
let leftCount = 0;
let centerCount = 0;
let rightCount = 0;
// 取得した二次元配列をループ処理
for (const row of alignments) {
for (const align of row) {
switch (align) {
case 'left':
leftCount++;
break;
case 'center':
centerCount++;
break;
case 'right':
rightCount++;
break;
}
}
}
const result = `分析結果 - 左寄せ: ${leftCount}セル, 中央寄せ: ${centerCount}セル, 右寄せ: ${rightCount}セル`;
Logger.log(result);
}
このスクリプトは、データが存在するすべてのセルの配置を集計し、レポートを出力します。大規模なデータシートの整形ルールを確認する際に役立ちます。
注意点とベストプラクティス
- 単一セル vs 範囲指定:
getHorizontalAlignment()を範囲(例:A1:B2)に対して使用した場合、範囲の左上隅のセル(この場合はA1)の配置のみが返されます。範囲全体の情報を取得したい場合は、getHorizontalAlignments()を使用してください。 - パフォーマンス: 多数のセルの配置を一つずつループで取得すると、処理が遅くなる可能性があります。
getHorizontalAlignments()を使って一括で情報を取得し、配列を操作する方がパフォーマンス上有利です。 - 数式セルの挙動: セルに数式が入力されている場合、その配置は数式の評価結果(数値かテキストか)に基づいて
generalのルールに従います。
まとめ
GAS の getHorizontalAlignment() メソッドは、スプレッドシートのセル配置をプログラムで管理するための基本となる機能です。
単に配置を取得するだけでなく、setHorizontalAlignment() と組み合わせることで、データの種類に応じた自動整形や、シート全体の配置分析など、さまざまな応用が可能です。
データを見やすく、管理しやすくするために、ぜひこの機能を活用してみてください。

