表を見やすくするために、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() |
次のステップ
- GASのセル読み書き|getRange/getValue/setValueの基本
- Utilities.formatDateで日付を好きな形式に変換
- 【完全ガイド】GASでスプレッドシートを自動化する方法
あわせて読みたい
日付の見た目を変える方法には、セル側の setNumberFormat() と、値そのものを文字列にする Utilities.formatDate() の2通りがある。どちらを使うべきかは次の記事で詳しく扱っている。
コメント