Google Apps Script (GAS) を用いてスプレッドシートのレイアウトを調整する際、**セルの「垂直配置」(上寄せ、中央揃え、下寄せ)**をプログラムで正確に取得・設定することは、データの視認性を高め、一貫性のあるデザインを保つ上で不可欠です。getVerticalAlignment()メソッドは、この垂直配置を単一セルから取得するための基本的ながら強力な機能です。
本記事では、GASのRange.getVerticalAlignment()メソッドを徹底解説します。単一セルの垂直配置取得の基本から、複数セルの垂直配置を効率的に一括取得できるgetVerticalAlignments()との違い、さらには**setVerticalAlignment() / setVerticalAlignments()による垂直配置の設定方法**、テキスト長や内容に応じた自動配置といった実践的な応用例まで、具体的なコードを交えて分かりやすく紹介します。
GAS初心者から、スプレッドシートの視覚的表現と自動化の効率をさらに高めたい上級者まで、すべての方に役立つ情報が満載です。

getVerticalAlignment()メソッドとは?GASでセルの垂直配置を取得する基本
Range.getVerticalAlignment()メソッドは、Google Apps Scriptにおいて、指定したセル範囲(Rangeオブジェクト)の「左上のセル」に設定されている垂直配置をString型で取得するための機能です。
垂直配置には、以下の3種類があります。
"top": テキストをセルの上端に寄せます。(上寄せ)"middle": テキストをセルの中央に配置します。(中央揃え)"bottom": テキストをセルの下端に寄せます。(下寄せ)
このメソッドを使用することで、プログラム内でセルのテキストが垂直方向にどのように配置されるように設定されているかを詳細に識別できます。
基本的な使用例:A1セルの垂直配置を取得する
以下のスクリプトは、アクティブなシートのA1セルを指定し、その垂直配置を取得してログに出力する最も基本的な例です。
/**
* アクティブなシートのA1セルの垂直配置を取得し、ログに出力する関数。
* 返り値は "top", "middle", "bottom" のいずれかです。
*/
function getSingleCellVerticalAlignment() {
const sheet = SpreadsheetApp.getActiveSheet(); // アクティブなシートを取得
const cell = sheet.getRange("A1"); // A1セルをRangeオブジェクトとして取得
const verticalAlignment = cell.getVerticalAlignment(); // A1セルの垂直配置を取得
// 取得した垂直配置をログに出力
Logger.log(`A1セルの垂直配置: "${verticalAlignment}"`);
}
このコードを実行すると、A1セルに設定されているテキストの垂直配置がログに表示されます。
getVerticalAlignment()とgetVerticalAlignments()の違い:一括処理の重要性
GASには、セルの垂直配置に関連する情報を取得するための類似メソッドとしてgetVerticalAlignments()も存在します。それぞれの違いを理解し、目的と状況に応じて適切に使い分けることが、効率的で堅牢なスクリプト開発に繋がります。
| メソッド名 | 対象範囲 | 戻り値の型 | API呼び出し効率 |
|---|---|---|---|
getVerticalAlignment() | 指定範囲の左上の単一セルのみ | String ("top", "middle", "bottom") | 単一セル向け |
getVerticalAlignments() | 指定範囲内の全セル | String[][] (二次元文字列配列) | 複数セルの一括処理に最適 |
パフォーマンスの観点:
複数のセルの垂直配置を取得したい場合、getVerticalAlignment()をループ内で繰り返し呼び出すのは非効率的です。GASのベストプラクティスとして、API呼び出し回数を削減するために、getVerticalAlignments()を使用して一括で二次元配列として取得するバッチ処理を強く推奨します。
/**
* 複数範囲のセルの垂直配置を一括取得し、ログに出力する関数。
* getRange("A1:C3") の場合、[["top", "middle", "bottom"], ["bottom", ...]] の形式で返されます。
*/
function getRangeVerticalAlignments() {
const sheet = SpreadsheetApp.getActiveSheet();
const range = sheet.getRange("A1:C3"); // 対象範囲をA1:C3に設定
const alignments = range.getVerticalAlignments(); // 範囲内の全セルの垂直配置を一括取得
Logger.log(`A1:C3範囲の垂直配置:\n${JSON.stringify(alignments, null, 2)}`);
// 各セルのアドレスと共に垂直配置を出力する例
alignments.forEach((rowAlignments, rowIndex) => {
rowAlignments.forEach((alignment, colIndex) => {
// getCell(row, column) は1から始まるインデックス
const cellAddress = range.getCell(rowIndex + 1, colIndex + 1).getA1Notation();
Logger.log(`セル ${cellAddress}: 垂直配置 "${alignment}"`);
});
});
}
setVerticalAlignment() / setVerticalAlignments()で垂直配置を設定する
GASでは、セルの垂直配置をプログラムで動的に設定することも可能です。
1. setVerticalAlignment(alignment)で単一または範囲全体に同じ配置を設定
指定したRangeオブジェクト(単一セルまたは複数セル範囲)に対して、すべてのセルに同じ垂直配置を一括で設定します。
/**
* A1からC3の範囲のすべてのセルの垂直配置を「中央揃え」に設定する関数。
*/
function setRangeVerticalAlignmentExample() {
const sheet = SpreadsheetApp.getActiveSheet();
const range = sheet.getRange("A1:C3");
range.setVerticalAlignment("middle"); // 全セルを中央揃えに設定
Logger.log(`A1:C3範囲の垂直配置を「中央揃え」に設定しました。`);
}
複数の離れた範囲に対して一括で同じ配置を設定したい場合は、SpreadsheetApp.RangeListオブジェクトとRangeList.setVerticalAlignment()を使用することもできます。
2. setVerticalAlignments(alignments)でセルごとに異なる配置を一括設定
セルごとに異なる垂直配置を設定したい場合は、二次元配列で各セルの配置文字列("top", "middle", "bottom")を渡し、setVerticalAlignments()メソッドで一括設定します。この際、渡す二次元配列のサイズは、対象Rangeオブジェクトのサイズと完全に一致している必要があります。
/**
* A1からC3範囲の各セルに異なる垂直配置を一括で設定する関数。
*/
function setMultipleVerticalAlignmentsExample() {
const sheet = SpreadsheetApp.getActiveSheet();
const range = sheet.getRange("A1:C3");
// 設定したい垂直配置を二次元配列で定義
const alignments = [
["top", "middle", "bottom"], // A1, B1, C1
["bottom", "middle", "top"], // A2, B2, C2
["middle", "top", "bottom"] // A3, B3, C3
];
range.setVerticalAlignments(alignments); // 垂直配置を一括設定
Logger.log(`A1:C3範囲の各セルに異なる垂直配置を設定しました。`);
}
この方法により、複雑なレイアウト要件を持つスプレッドシートの整形作業を効率的に自動化できます。
応用テクニック:内容に応じた垂直配置の自動調整
セルの内容(例: テキスト長)に基づいて、垂直配置を動的に調整する機能は、スプレッドシートの見た目を自動で最適化する上で非常に役立ちます。
/**
* セルの内容のテキスト長に応じて、垂直配置を自動調整する関数。
* テキスト長が50文字を超えるセルは「上寄せ」、それ以外は「中央揃え」に設定します。
*/
function autoAdjustVerticalAlignmentBasedOnContent() {
const sheet = SpreadsheetApp.getActiveSheet();
const dataRange = sheet.getDataRange(); // シート内のデータが存在する全範囲を取得
const values = dataRange.getValues(); // 全範囲のセル値を取得(テキスト長取得用)
const newAlignments = []; // 新しい垂直配置を格納する二次元配列
values.forEach(rowValues => {
const rowAlignments = [];
rowValues.forEach(cellValue => {
// セル値のテキスト長に基づいて垂直配置を決定
if (String(cellValue).length > 50) { // 例: 50文字を超える場合
rowAlignments.push("top"); // 上寄せ
} else {
rowAlignments.push("middle"); // 中央揃え
}
});
newAlignments.push(rowAlignments);
});
// 生成した新しい垂直配置を一括でシートに適用
dataRange.setVerticalAlignments(newAlignments);
Logger.log("セルの内容に応じて垂直配置を自動調整しました。");
}
要件に応じて、テキスト長、数値の大小、特定のキーワードの有無など、様々な条件で配置を動的に分岐させることが可能です。
まとめ:getVerticalAlignment()でGASスプレッドシートのレイアウト自動化を極める
Google Apps ScriptのgetVerticalAlignment()およびgetVerticalAlignments()メソッドは、スプレッドシートの垂直配置をプログラムで効率的に管理するための、非常に強力なツールです。
- 正確な垂直配置の取得:
getVerticalAlignment()で単一セルの垂直配置を、getVerticalAlignments()で複数セルの配置を一括で取得できます。 - 柔軟な垂直配置の設定:
setVerticalAlignment()で一括設定、setVerticalAlignments()でセルごとに異なる配置を一括設定し、複雑なレイアウト要件に対応できます。 - 動的なレイアウト調整: セルの内容(例: テキスト長)に基づいて垂直配置を自動調整することで、手動作業を削減し、シートの視認性とデザインの一貫性を保てます。
- 効率的なスクリプト開発: バッチ処理(
getVerticalAlignments(),setVerticalAlignments())を徹底することで、API呼び出し回数を減らし、スクリプトのパフォーマンスを最大化できます。
本記事で紹介した知識と実践例を活用し、あなたのGASスクリプトをより高度で柔軟なスプレッドシート自動化ツールへと進化させてください。垂直配置の細かな制御は、ユーザーエクスペリエンスの向上とデータ表示の正確性に大きく貢献します。

getVerticalAlignment() セルの垂直方向の配置(上寄せ、中央寄せ、下寄せ)を取得する。 サンプルコード // 現在アクティブなスプレッドシートを取得 var ss = SpreadsheetApp.getActiveSpreadsheet(); // そのスプレッドシートにある最初のシートを取得 var sheet = ss.getSheets()[0]; // そのシートにある B2 のセルを取得 var cell = sheet.getRange(“B2”); // そのセルの垂直方向の配置を取得しログに出力 Logger.log(cell.getVerticalAlignment()); var ss = SpreadsheetApp.getActiveSpreadsheet(); // そのスプレッドシートにある最初のシートを取得 var sheet = ss.getSheets()[0]; var cell = sheet.getRange(“B2”); Logger.log(cell.getVerticalAlignment()); 引数 無し。 戻り値 文字列 – 取得した垂直方向の配置(top:上寄せ、middle:中央寄せ、bottom:下寄せ) この記事が気に入ったら いいねしよう! 最新記事をお届けします。

Learn best practices to improve the performance of your Apps Script projects.
はじめに え、このシリーズ#003で終わったんじゃ無かったのかって?ええ、続きます( ´艸`) まだネタがあったので少なくとも#005までは続けます(`・ω・) 概要 スプレッドシート出社記録を付けているのだが、この表何と手作り(* ´艸`)クスクス 無くなったら新た...