MENU

【GAS】セルの書式設定|背景色・文字色・罫線・セル結合の使い方(コピペOK)

表を見やすくするために、GASでセルの「背景色・文字色・罫線・セル結合」を設定したい場面はよくあります。これらは Range(範囲)に対して setBackground / setFontColor / setBorder / merge を呼ぶだけです。この記事ではコピペで動くコード例で、書式設定をまとめて解説します。

この記事のポイント

  • 背景色は setBackground("#fff2cc")、文字色は setFontColor("#cc0000")(16進カラー)
  • 罫線は setBorder(上, 左, 下, 右, 内縦, 内横) の6つの真偽値
  • セル結合は merge()、中央揃えは setHorizontalAlignment("center")
  • 数値・日付の見た目は setNumberFormat() で変える
目次

背景色・文字色・太字

まず範囲を getRange で取得し、書式メソッドを呼びます。色は16進カラーコード("#ff0000")か色名("red")で指定します。

function setColors() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  const range = sheet.getRange("A1:C1");

  range.setBackground("#fff2cc"); // 背景色(薄い黄)
  range.setFontColor("#cc0000");  // 文字色(赤)
  range.setFontWeight("bold");    // 太字
  range.setFontSize(12);          // 文字サイズ
}

罫線を引く:setBorder

setBorder の引数は「上・左・下・右・内側の縦・内側の横」の6つを真偽値で指定します。

function setBorders() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  const range = sheet.getRange("A1:C5");

  // 上, 左, 下, 右, 内側縦, 内側横 をすべて引く
  range.setBorder(true, true, true, true, true, true);
}

注意:線の色やスタイル(点線など)を変えたいときは、7番目以降の引数で range.setBorder(true, true, true, true, true, true, "#999999", SpreadsheetApp.BorderStyle.SOLID) のように指定します。

セルを結合して中央揃え:merge

見出し行などでよく使う「結合+中央揃え」はこう書きます。

function mergeCenter() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  const range = sheet.getRange("A1:C1");

  range.merge();                          // セル結合
  range.setHorizontalAlignment("center"); // 横中央
  range.setVerticalAlignment("middle");   // 縦中央
  range.setValue("売上レポート");
}

注意:結合すると左上のセル以外の値は消えます。結合は値を入れる前か、左上に値を置いてから行いましょう。

数値・日付の見た目:setNumberFormat と列幅

「1,000円」「2026/04/01」のような表示は、値を変えずに見た目だけ整える setNumberFormat が便利です。

function numberFormat() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  sheet.getRange("B2:B10").setNumberFormat("#,##0\"円\""); // 1,000円
  sheet.getRange("C2:C10").setNumberFormat("yyyy/mm/dd");  // 日付表示
  sheet.setColumnWidth(1, 200); // A列の幅を200pxに
}

実践:条件に合うセルだけ色を変える

「1万円以上の金額を赤くする」のような強調はループで処理できます。

function highlightOver() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  const last = sheet.getLastRow();

  for (let row = 2; row <= last; row++) {
    const cell = sheet.getRange(row, 2); // B列の金額
    if (cell.getValue() >= 10000) {
      cell.setBackground("#ffcccc"); // 1万以上は薄い赤
    }
  }
}

ヒント:1セルずつ色を変えると遅くなります。大量のときは範囲でまとめて setBackgrounds()(複数形・2次元配列)を使うと高速です。

よくあるつまずきと直し方

色が変わらない → カラーコードの形式を確認("#ff0000" または "red")。"ff0000" のように#抜けはNG。

罫線の引く位置がおかしい → setBorder の引数順は「上・左・下・右・内縦・内横」。nullを渡すとその辺は変更しません。

結合で値が消えた → 結合は左上以外の値を消します。左上に値を入れてから結合を。

処理が遅い → 1セルずつより、範囲でまとめて setBackgrounds() / setValues()。

この記事のポイント(まとめ)

やりたいこと 使うもの
背景色 / 文字色 setBackground() / setFontColor()
太字・サイズ setFontWeight("bold") / setFontSize()
罫線 setBorder(上,左,下,右,内縦,内横)
結合・中央 merge() + setHorizontalAlignment("center")
数値/日付の表示 setNumberFormat()
速度 範囲でまとめて setBackgrounds()

次のステップ

あわせて読みたい

日付の見た目を変える方法には、セル側の setNumberFormat() と、値そのものを文字列にする Utilities.formatDate() の2通りがある。どちらを使うべきかは次の記事で詳しく扱っている。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

目次