Ribbit works
記事のトップ画像

セルの垂直配置設定(上寄せ・中央寄せ・下寄せ)をGASから動的に制御する【Google Apps Script】

Google Apps Scriptスプレッドシート

last modified date2022-2-11

publish date2022-2-1

Google スプレッドシートでは、セルの垂直配置設定が標準で下揃えになっています。

シート内全てについて同じ垂直配置設定を適用させる場合は、あらかじめスプレッドシート側で設定しておけば問題ありませんが、動的に、部分的に設定したい場合もあるかと思います。

今回はGASからセルの垂直配置設定を変更する方法をご紹介します。

垂直配置情報を取得する

垂直配置情報の取得には、以下の関数を使用します。

/** 対象範囲の垂直方向設定 */
const aligns = range.getVerticalAlignments();

サンプルコード

/**
 * 対象スプレッドシートのID
 * https://docs.google.com/spreadsheets/d/〇〇〇/edit の〇〇〇の部分
 */
const SPREAD_SHEET_ID = "_______________";

const outputAlignments = () => {
  /** 対象スプレッドシート */
  const ss = SpreadsheetApp.openById(SPREAD_SHEET_ID);

  /** 対象シート */
  const sheet = ss.getSheetByName("シート1");

  /** 対象セル範囲 */
  const range = sheet.getRange("A1:B3");

  /** 対象範囲の垂直方向設定 */
  const aligns = range.getVerticalAlignments();

  for (const row of aligns) {
    for (const cell of row) {
      console.log(cell);
    }
  }
};

実行結果

11:22:37	お知らせ	実行開始
11:22:38	情報	top
11:22:38	情報	middle
11:22:38	情報	bottom
11:22:38	お知らせ	実行完了

垂直配置情報を設定する

垂直配置情報の設定には、以下の関数を使用します。

// セル範囲すべてに適用させる場合
range.setVerticalAlignment("middle");

// セル単位で設定する場合(構造を取得した配列と合わせる必要があります)
range.setVerticalAlignments([["top", "middle", "bottom"]]);

サンプルコード

/**
 * 対象スプレッドシートのID
 * https://docs.google.com/spreadsheets/d/〇〇〇/edit の〇〇〇の部分
 */
const SPREAD_SHEET_ID = "_______________";

const setAlignments = () => {
  /** 対象スプレッドシート */
  const ss = SpreadsheetApp.openById(SPREAD_SHEET_ID);

  /** 対象シート */
  const sheet = ss.getSheetByName("シート1");

  /** 対象セル範囲 */
  const range = sheet.getRange("A1:B3");

  // セル範囲すべてに適用させる場合
  range.setVerticalAlignment("middle");

  // セル単位で設定する場合(構造を取得した配列と合わせる必要があります)
  range.setVerticalAlignments([["top", "middle", "bottom"]]);
};

権限エラーが表示される場合

GASからスプレッドシートにアクセスする場合、GASがアクセスすることを許可する必要があります。 許可されていない状態でプログラムを実行すると、以下のようなメッセージが表示されます。

このプロジェクトを実行するには、ご利用の Google アカウントへのアクアセスを許可する必要があります。再試行して、許可してください。

再度実行しなおすことで、権限を付与するか確認するダイアログが表示されるので、案内に従って権限を付与してください。