GASでスプレッドシートのセル範囲から垂直配置設定を一括取得する方法

Google スプレッドシートをカスタマイズするなら、Google Apps Script(GAS)は避けて通れんばい。今回は、その中でもセルの垂直配置を取得する getVerticalAlignments() について深掘りしていくけんね!

スポンサーリンク

getVerticalAlignments() って何ばい?

このメソッドは、指定した範囲内のセルの垂直配置を取得できる便利な関数たい。スプレッドシートでデータをきれいに整理するには欠かせんとよ。

垂直配置の種類は以下の3つ:

  • top:セルの上側に寄せる
  • middle:セルの中央に配置(デフォルト)
  • bottom:セルの下側に寄せる

スプレッドシートのデフォルト設定は bottom になっとるけん、Excelとは違うとこに注意せんといかんばい。

getVerticalAlignments() の基本構文

range.getVerticalAlignments();

戻り値

メソッドを実行すると、対象範囲のセルの垂直配置が二次元配列で返ってくるばい!

例えば、3行2列のセル範囲で getVerticalAlignments() を実行すると、こんな感じの配列が返ってくる

[
  ['top', 'middle'],
  ['bottom', 'top'],
  ['middle', 'bottom']
]

getVerticalAlignments() の活用例

1. セルの垂直配置を取得する基本的なスクリプト

function fetchVerticalAlignments() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sheet = ss.getSheetByName('データシート');
  const targetRange = sheet.getRange('B2:D4');
  
  const alignments = targetRange.getVerticalAlignments();
  
  console.log('垂直配置データ:', alignments);
}

2. 配列データを整理して表示する

alignments.forEach((row, rowIndex) => {
  row.forEach((alignment, colIndex) => {
    console.log(`行 ${rowIndex+1}, 列 ${colIndex+1}: ${alignment}`);
  });
});

3. すべてのセルの垂直配置を中央寄せに変更

function standardizeVerticalAlignment() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sheet = ss.getActiveSheet();
  const range = sheet.getDataRange();
  
  const alignments = range.getVerticalAlignments().map(row => row.map(() => 'middle'));
  
  range.setVerticalAlignments(alignments);
}

getVerticalAlignments() の応用シナリオ

条件付き書式設定と連携

たとえば、bottom になっているセルを middle に変更するといった動的書式設定もできるばい!

function applyConditionalFormatting() {
  const range = SpreadsheetApp.getActiveRange();
  const alignments = range.getVerticalAlignments();
  
  const updatedAlignments = alignments.map(row =>
    row.map(alignment => alignment === 'bottom' ? 'middle' : alignment)
  );
  
  range.setVerticalAlignments(updatedAlignments);
}

編集履歴を記録するシステム

変更前後の垂直配置をログに保存する仕組みも簡単に作れるっちゃ!

function monitorAlignmentChanges() {
  const sheet = SpreadsheetApp.getActiveSheet();
  const historySheet = SpreadsheetApp.openById('履歴シートID').getSheetByName('ログ');
  
  const currentAlignments = sheet.getRange('A1:C10').getVerticalAlignments();
  const timestamp = new Date();
  
  historySheet.appendRow([timestamp, JSON.stringify(currentAlignments)]);
}

まとめ

  • getVerticalAlignments() を使えば、セルの垂直配置を簡単に取得できる!
  • データを整理するのに役立つし、動的な書式設定にも活用できる!
  • setVerticalAlignments() と組み合わせることで、配置変更も自由自在!

GAS を使いこなせば、スプレッドシートがもっと便利になるばい!

コメント

タイトルとURLをコピーしました