- 技術 💻
GASスプレッドシート書式設定一覧|背景色・罫線・列幅
GAS(Google Apps Script)でスプレッドシートの見た目を整えるには、範囲(Range)とシート(Sheet)の書式メソッドを使います。 背景色は setBackground、罫線は setBorder、列幅は setColumnWidth や autoResizeColumns というように、やりたいことごとにメソッドが決まっています。
この記事では、見出し行の装飾・固定・罫線・列幅の調整を1関数で済ませるコードを最初に示し、そのあとに書式メソッドを「やりたいこと→メソッド→引数の例」の逆引き表にまとめます。値の読み書きや画面操作での設定は扱わず、スクリプトからの見た目の設定だけに絞っています。
確認環境:メソッド名・引数・指定できる値は、Google 公式の Apps Script リファレンス(Class Range/Class Sheet/ConditionalFormatRuleBuilder/Enum BorderStyle)と Google Sheets API の「Number format patterns」を 2026-10-06 に開いて確認し、型定義パッケージ @types/google-apps-script 2.0.13 と照合しました。コードは Node.js 22.22.2 で構文を確かめ、シートをまねた簡易モックの上で動かして、どの範囲にどのメソッドがどの引数で呼ばれるかを記録しています。記事中の「モックでの呼び出し記録」はその出力で、画面上の見た目そのものを写したものではありません。
この記事の結論
- 表を整える定番は、見出し行を太字+背景色+中央寄せ+固定、表全体に罫線、列幅を自動調整の4点です。下のコードを貼れば1回の実行で済みます。
- 1色で塗るなら
setBackground、セルごとに色を変えるなら二次元配列を渡すsetBackgroundsを使います。 - 値が変わるたびに色を変えたいなら条件付き書式(
newConditionalFormatRule)、実行した時点の見た目を固定したいなら直接の書式設定を選びます。 setBorderの引数は 上・左・下・右・内側の縦・内側の横 の順で、trueは引く、falseは消す、nullは変えない、です。
コピペ用:表を整える1関数
function formatTable() {
const sheet = SpreadsheetApp.getActiveSheet();
const lastRow = sheet.getLastRow();
const lastCol = sheet.getLastColumn();
if (lastRow < 1 || lastCol < 1) return; // 空のシートでは何もしない
// 1. 見出し行:太字+背景色+中央寄せ
sheet.getRange(1, 1, 1, lastCol)
.setFontWeight('bold')
.setBackground('#d9ead3')
.setHorizontalAlignment('center')
.setVerticalAlignment('middle');
// 2. 見出し行を固定
sheet.setFrozenRows(1);
// 3. 表全体に罫線(外枠+内側の縦線・横線)
sheet.getRange(1, 1, lastRow, lastCol)
.setBorder(true, true, true, true, true, true,
'#999999', SpreadsheetApp.BorderStyle.SOLID);
// 4. 列幅を内容に合わせて自動調整
sheet.autoResizeColumns(1, lastCol);
}
次の6行×6列の表(備品の在庫表を想定)に対して動かしたときの、モックでの呼び出し記録です。
| A | B | C | D | E | F | |
|---|---|---|---|---|---|---|
| 1 | 品名 | 分類 | 在庫数 | 単価 | 入荷日 | 充足率 |
| 2 | コピー用紙 A4 | 消耗品 | 42 | 480 | 2026-09-01 | 0.84 |
| 3 | ホワイトボードマーカー | 消耗品 | 6 | 150 | 2026-09-12 | 0.3 |
| 4 | 延長コード 3m | 備品 | 15 | 1280 | 2026-08-20 | 0.75 |
| 5 | プロジェクター用ケーブル | 備品 | 3 | 2400 | 2026-07-30 | 0.15 |
| 6 | 付せん 75mm | 消耗品 | 28 | 320 | 2026-09-25 | 0.93 |
A1:F1.setFontWeight("bold")
A1:F1.setBackground("#d9ead3")
A1:F1.setHorizontalAlignment("center")
A1:F1.setVerticalAlignment("middle")
sheet.setFrozenRows(1)
A1:F6.setBorder(true, true, true, true, true, true, "#999999", SpreadsheetApp.BorderStyle.SOLID)
sheet.autoResizeColumns(1, 6)
書式メソッドの多くは Range を返すので、.setFontWeight('bold').setBackground(...) のようにつなげて書けます。行数と列数は getLastRow() と getLastColumn() から求めているため、表の大きさが変わってもコードはそのまま使えます。
書式メソッドの早見表(やりたいこと→メソッド→引数の例)
範囲(Range)に対するメソッド
sheet.getRange(...) で取った範囲に対して呼びます。
| やりたいこと | メソッド | 引数の例 |
|---|---|---|
| 背景色を付ける | setBackground(color) |
'#d9ead3' |
| 背景色を RGB で指定する | setBackgroundRGB(red, green, blue) |
217, 234, 211(各 0〜255) |
| セルごとに背景色を変える | setBackgrounds(colors) |
[['#ffffff', '#f3f3f3'], ['#ffffff', '#f3f3f3']] |
| 文字色を変える | setFontColor(color) |
'#cc0000' |
| セルごとに文字色を変える | setFontColors(colors) |
色の二次元配列 |
| 文字サイズを変える | setFontSize(size) |
12(ポイント) |
| 太字にする・戻す | setFontWeight(fontWeight) |
'bold'、'normal' |
| 斜体にする・戻す | setFontStyle(fontStyle) |
'italic'、'normal' |
| 下線・取り消し線を付ける | setFontLine(fontLine) |
'underline'、'line-through'、'none' |
| フォントを変える | setFontFamily(fontFamily) |
'Arial' |
| 横の配置を変える | setHorizontalAlignment(alignment) |
'left'、'center'、'right' |
| 縦の配置を変える | setVerticalAlignment(alignment) |
'top'、'middle'、'bottom' |
| 折り返して全体を表示する | setWrap(isWrapEnabled) |
true、false |
| はみ出し方を選ぶ | setWrapStrategy(strategy) |
SpreadsheetApp.WrapStrategy.WRAP、OVERFLOW、CLIP |
| 表示形式を変える | setNumberFormat(numberFormat) |
'#,##0'、'yyyy-mm-dd'、'0.0%' |
| セルごとに表示形式を変える | setNumberFormats(numberFormats) |
書式文字列の二次元配列 |
| 罫線を引く | setBorder(top, left, bottom, right, vertical, horizontal) |
true, true, true, true, true, true |
| 罫線の色と線種も指定する | setBorder(top, left, bottom, right, vertical, horizontal, color, style) |
上に続けて '#999999', SpreadsheetApp.BorderStyle.SOLID |
| セルを結合する・解除する | merge()、breakApart() |
引数なし |
| 書式だけ消す | clearFormat() |
引数なし |
| 書式だけ消す(オプション指定) | clear(options) |
{ formatOnly: true } |
| 値だけ消す | clearContent() |
引数なし |
| 値も書式も消す | clear() |
引数なし |
シート(Sheet)に対するメソッド
列幅・行の高さ・固定は、範囲ではなくシートに対して呼びます。
| やりたいこと | メソッド | 引数の例 |
|---|---|---|
| 1列の幅を決める | setColumnWidth(columnPosition, width) |
1, 220(A列を220ピクセル) |
| 複数列の幅をそろえる | setColumnWidths(startColumn, numColumns, width) |
2, 5, 100(B列から5列を100ピクセル) |
| 1列の幅を内容に合わせる | autoResizeColumn(columnPosition) |
1 |
| 複数列の幅を内容に合わせる | autoResizeColumns(startColumn, numColumns) |
1, 6 |
| 1行の高さを決める | setRowHeight(rowPosition, height) |
1, 32 |
| 複数行の高さをそろえる | setRowHeights(startRow, numRows, height) |
2, 5, 24 |
| 内容に関係なく行の高さを固定する | setRowHeightsForced(startRow, numRows, height) |
2, 5, 24 |
| 行の高さを内容に合わせる | autoResizeRows(startRow, numRows) |
2, 5 |
| 上の行を固定する | setFrozenRows(rows) |
1 |
| 左の列を固定する | setFrozenColumns(columns) |
1 |
| 条件付き書式のルールを取得する | getConditionalFormatRules() |
引数なし |
| 条件付き書式のルールを設定する | setConditionalFormatRules(rules) |
ルールの配列 |
| 条件付き書式をすべて消す | clearConditionalFormatRules() |
引数なし |
| シート全体の書式を消す | clearFormats() |
引数なし |
| シートのタブに色を付ける | setTabColor(color) |
'#6aa84f' |
本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。
(記載例)出典:株式会社RJC「GASスプレッドシート書式設定一覧|背景色・罫線・列幅」
列と行の番号は 1 から数えます(A列=1)。幅と高さの単位はピクセルです。
setBackgroundとsetBackgroundsの違い
名前の末尾に s が付くメソッドは、セルごとに別の値を指定するための二次元配列版です。背景色に限らず、setFontColors、setFontWeights、setFontSizes、setNumberFormats、setHorizontalAlignments などが同じ関係になっています。
| 比べる点 | setBackground | setBackgrounds |
|---|---|---|
| 引数 | 色の文字列を1つ | 色の二次元配列([行][列]) |
| 塗られ方 | 範囲全体が同じ色 | セルごとに配列の色 |
| 配列の大きさ | 関係なし | 範囲と同じ行数×列数にそろえる |
| 向いている場面 | 見出し行、列全体の色付け | 1行おきの色分け、値に応じた色分け |
1行おきに色分けする・値に応じて色分けする
// データ行を1行おきに色分けする(setBackgrounds に二次元配列を渡す)
function stripeRows() {
const sheet = SpreadsheetApp.getActiveSheet();
const lastRow = sheet.getLastRow();
const lastCol = sheet.getLastColumn();
if (lastRow < 2) return; // データ行が無い
const numRows = lastRow - 1; // 見出し行を除く
const colors = [];
for (let r = 0; r < numRows; r++) {
const color = r % 2 === 0 ? '#ffffff' : '#f3f3f3';
colors.push(new Array(lastCol).fill(color)); // 1行ぶん=列数ぶんの配列
}
sheet.getRange(2, 1, numRows, lastCol).setBackgrounds(colors);
}
// 在庫数(C列)が10未満の行だけ色を付ける(値を読んで配列を作る)
function highlightLowStock() {
const sheet = SpreadsheetApp.getActiveSheet();
const lastRow = sheet.getLastRow();
const lastCol = sheet.getLastColumn();
if (lastRow < 2) return;
const range = sheet.getRange(2, 1, lastRow - 1, lastCol);
const colors = range.getValues().map(row =>
new Array(lastCol).fill(row[2] < 10 ? '#fce5cd' : '#ffffff'));
range.setBackgrounds(colors);
}
どちらの関数も、範囲 A2:F6 に対して setBackgrounds を 1回だけ呼びます(モックでの呼び出し記録)。
A2:F6.setBackgrounds(5行x6列の配列)
highlightLowStock が作る配列の1列目を取り出すと、在庫数が 10 未満の3行目(ホワイトボードマーカー)と5行目(プロジェクター用ケーブル)だけ色が変わっていることを確認できます。
["#ffffff","#fce5cd","#ffffff","#fce5cd","#ffffff"]
セルを1つずつ setBackground で塗るループに比べて、シートへの呼び出しが1回で済むのが利点です。配列を作るときは、行数は numRows、1行の要素数は列数と、範囲の大きさから組み立てると大きさがそろいます。
直接の書式設定と条件付き書式の違いと選び方
setBackground などで付けた色は、実行した時点の値に基づく固定の見た目です。あとで在庫数が書き換わっても、色は変わりません。値の変化に合わせて色を変えたいときは、条件付き書式のルールをスクリプトから設定します。
| 比べる点 | 直接の書式設定 | 条件付き書式 |
|---|---|---|
| 書き方 | range.setBackground(...) など |
SpreadsheetApp.newConditionalFormatRule() でルールを作り、sheet.setConditionalFormatRules(rules) で設定 |
| 値が変わったとき | 見た目はそのまま | ルールに沿って自動で変わる |
| 設定できる見た目 | 背景色・文字・配置・罫線・表示形式・列幅など全般 | 背景色、文字色、太字、斜体、下線、取り消し線、色のグラデーション |
| 条件の書き方 | JavaScript の if で自由に書ける | whenNumberLessThan、whenTextEqualTo、whenFormulaSatisfied などから選ぶ |
| 消し方 | clearFormat()、clearFormats() |
clearConditionalFormatRules() |
どちらを使うかの判断表
| 条件 | 選ぶもの |
|---|---|
| 値が変わるたびに色を変えたい | 条件付き書式 |
| 見出し行や合計行など、場所が決まっている装飾 | 直接の書式設定 |
| 罫線・配置・表示形式・列幅を整えたい | 直接の書式設定 |
| 集計した時点の状態を、色で記録として残したい | 直接の書式設定(setBackgrounds) |
| 条件が複雑で、JavaScript で判定したい | 直接の書式設定(スクリプトを実行するたびに塗り直す) |
| シートを使う人が、あとから画面で条件を調整したい | 条件付き書式 |
条件付き書式をスクリプトで設定する
// 在庫数(C列)が10未満の行に色を付ける条件付き書式を設定する
function setLowStockRule() {
const sheet = SpreadsheetApp.getActiveSheet();
const range = sheet.getRange('A2:F1000');
const rule = SpreadsheetApp.newConditionalFormatRule()
.whenFormulaSatisfied('=AND($C2<>"", $C2<10)') // 行全体を塗るので列は $ で固定
.setBackground('#fce5cd')
.setBold(true)
.setRanges([range])
.build();
// 何度実行してもルールが増えないよう、入れ替える
sheet.setConditionalFormatRules([rule]);
}
// 既存のルールを残したまま1件追加する
function addStatusRule() {
const sheet = SpreadsheetApp.getActiveSheet();
const rule = SpreadsheetApp.newConditionalFormatRule()
.whenTextEqualTo('要発注')
.setFontColor('#cc0000')
.setRanges([sheet.getRange('B2:B1000')])
.build();
const rules = sheet.getConditionalFormatRules();
rules.push(rule);
sheet.setConditionalFormatRules(rules);
}
setLowStockRule を2回、続けて addStatusRule を1回呼んだときの、モックでの呼び出し記録です。
(setLowStockRule 1回目)
sheet.setConditionalFormatRules(1件)
(setLowStockRule 2回目)
sheet.setConditionalFormatRules(1件)
(addStatusRule)
sheet.setConditionalFormatRules(2件)
setConditionalFormatRules は、シートのルール一式を渡した配列で置き換えるメソッドです。そのため、ルールを足したいときは getConditionalFormatRules() で今のルールを取り、push してから設定し直します(公式リファレンスのサンプルもこの形です)。逆に、同じ関数を何度も実行する使い方なら、配列を作り直して入れ替えるとルールが増え続けません。
条件を作るメソッドは、公式リファレンスに次のものが載っています。
| 条件 | メソッド |
|---|---|
| 数値の比較 | whenNumberEqualTo、whenNumberNotEqualTo、whenNumberGreaterThan、whenNumberGreaterThanOrEqualTo、whenNumberLessThan、whenNumberLessThanOrEqualTo、whenNumberBetween、whenNumberNotBetween |
| 文字列 | whenTextEqualTo、whenTextContains、whenTextDoesNotContain、whenTextStartsWith、whenTextEndsWith |
| 日付 | whenDateEqualTo、whenDateBefore、whenDateAfter |
| 空かどうか | whenCellEmpty、whenCellNotEmpty |
| 数式 | whenFormulaSatisfied(formula) |
| 見た目 | setBackground、setFontColor、setBold、setItalic、setUnderline、setStrikethrough |
| グラデーション | setGradientMinpoint、setGradientMaxpoint |
setBorderの引数と線種の早見表
setBorder は引数が多いので、順番を表で確かめながら書くと確実です。
| 順番 | 引数 | 対象の線 |
|---|---|---|
| 1 | top | 範囲の上の線 |
| 2 | left | 範囲の左の線 |
| 3 | bottom | 範囲の下の線 |
| 4 | right | 範囲の右の線 |
| 5 | vertical | 範囲の内側の縦線 |
| 6 | horizontal | 範囲の内側の横線 |
| 7 | color(省略可) | 線の色('#999999' など) |
| 8 | style(省略可) | 線種(SpreadsheetApp.BorderStyle の値) |
1〜6番目に渡す値の意味は次の3通りです。
| 値 | 意味 |
|---|---|
true |
線を引く |
false |
線を消す |
null |
今の状態を変えない |
線種は、公式リファレンスの Enum BorderStyle に6種類あります。
| 値 | 線の種類 |
|---|---|
SpreadsheetApp.BorderStyle.SOLID |
細い実線 |
SpreadsheetApp.BorderStyle.SOLID_MEDIUM |
中くらいの実線 |
SpreadsheetApp.BorderStyle.SOLID_THICK |
太い実線 |
SpreadsheetApp.BorderStyle.DOTTED |
点線 |
SpreadsheetApp.BorderStyle.DASHED |
破線 |
SpreadsheetApp.BorderStyle.DOUBLE |
二重線 |
よく使う罫線のパターン
// 罫線の引き方いろいろ
function borderSamples() {
const sheet = SpreadsheetApp.getActiveSheet();
const style = SpreadsheetApp.BorderStyle;
// 外枠だけ(内側は変えない)
sheet.getRange('A1:F6').setBorder(true, true, true, true, null, null);
// 見出し行の下だけ太線
sheet.getRange('A1:F1').setBorder(null, null, true, null, null, null,
'#000000', style.SOLID_MEDIUM);
// 内側の横線だけ点線
sheet.getRange('A2:F6').setBorder(null, null, null, null, null, true,
'#bbbbbb', style.DOTTED);
// 罫線をすべて消す
sheet.getRange('H1:J6').setBorder(false, false, false, false, false, false);
}
モックでの呼び出し記録です。
A1:F6.setBorder(true, true, true, true, null, null)
A1:F1.setBorder(null, null, true, null, null, null, "#000000", SpreadsheetApp.BorderStyle.SOLID_MEDIUM)
A2:F6.setBorder(null, null, null, null, null, true, "#bbbbbb", SpreadsheetApp.BorderStyle.DOTTED)
H1:J6.setBorder(false, false, false, false, false, false)
| やりたいこと | 1〜6番目の引数 |
|---|---|
| 格子(外枠+内側すべて) | true, true, true, true, true, true |
| 外枠だけ | true, true, true, true, null, null |
| 下線だけ | null, null, true, null, null, null |
| 内側の横線だけ | null, null, null, null, null, true |
| すべて消す | false, false, false, false, false, false |
setNumberFormatの書式文字列の早見表
setNumberFormat には、数値や日付の見せ方を表す書式文字列を渡します。セルの値そのものは変わらず、表示だけが変わります。記号の意味は Google Sheets API の「Number format patterns」に載っています。
数値の記号
| 記号 | 意味 |
|---|---|
0 |
数字1桁。意味を持たない 0 も 0 として表示する |
# |
数字1桁。意味を持たない 0 は表示しない |
? |
数字1桁。意味を持たない 0 は空白にする(桁をそろえる用途) |
. |
小数点 |
, |
数字の記号の間に置くと、桁区切りを付ける |
% |
値を 100 倍して % を付ける |
E+、E- |
指数表記にする |
"文字" |
引用符の中の文字をそのまま表示する |
@ |
セルに入力された文字列をそのまま差し込む |
[Color] 形式 |
その部分の文字色を指定する |
日付・時刻の記号
| 記号 | 意味 |
|---|---|
yy、yyyy |
年(2桁、4桁) |
m、mm |
月(前後が時や秒のときは分として扱われる) |
M、MM |
月であることをはっきり指定する書き方 |
mmm、mmmm |
月の名前(短い形、完全な形) |
d、dd |
日(先頭の 0 なし、あり) |
ddd、dddd |
曜日(短い形、完全な形) |
h、hh |
時(AM/PM の指定があると12時間表記になる) |
s、ss |
秒 |
am/pm、a/p |
午前・午後の表示。時を12時間表記にする |
[h]、[m]、[s] |
経過時間(24時間を超える時間の合計など) |
よく使う書式文字列
| 用途 | 書式文字列 | 記号の組み合わせ |
|---|---|---|
| 桁区切りの整数 | '#,##0' |
桁区切り+1の位は必ず表示 |
| 小数第2位まで | '0.00' |
小数点以下2桁を必ず表示 |
| 桁区切り+小数第1位 | '#,##0.0' |
上2つの組み合わせ |
| パーセント(小数第1位) | '0.0%' |
100倍して % |
| 単位つき | '#,##0"円"'、'0"個"' |
引用符の中をそのまま表示 |
| 先頭を 0 で埋める | '0000' |
4桁に満たない分を 0 で表示 |
| 日付 | 'yyyy-mm-dd'、'yyyy/MM/dd' |
年・月・日 |
| 日付と時刻 | 'yyyy/MM/dd hh:mm:ss' |
月は MM と書くと分と区別しやすい |
| 曜日つき | 'yyyy/MM/dd ddd' |
日付のあとに曜日の短い形 |
| 経過時間 | '[h]:mm' |
24時間を超えても時を繰り上げない |
| 文字列のまま表示 | '@' |
入力された文字列をそのまま |
公式ページには、#,### で 12,000、000.0000 で 012.3400、yyyy-mm-dd で 2016-04-05 と表示される例が載っています。
コピペ用:列ごとに表示形式・配置・列幅を設定する
// 列ごとに表示形式・配置・折り返しを設定する
function formatColumns() {
const sheet = SpreadsheetApp.getActiveSheet();
const lastRow = sheet.getLastRow();
if (lastRow < 2) return;
const numRows = lastRow - 1;
sheet.getRange(2, 1, numRows, 1).setWrap(true); // A列 品名:折り返す
sheet.getRange(2, 3, numRows, 1).setNumberFormat('#,##0'); // C列 在庫数:桁区切り
sheet.getRange(2, 4, numRows, 1).setNumberFormat('#,##0"円"'); // D列 単価:単位つき
sheet.getRange(2, 5, numRows, 1).setNumberFormat('yyyy-mm-dd') // E列 入荷日
.setHorizontalAlignment('center');
sheet.getRange(2, 6, numRows, 1).setNumberFormat('0.0%'); // F列 充足率
sheet.getRange(2, 3, numRows, 2).setHorizontalAlignment('right'); // C〜D列:右寄せ
sheet.setColumnWidth(1, 220); // A列を220ピクセルに
sheet.setColumnWidths(2, 5, 100); // B列から5列ぶんを100ピクセルに
sheet.setRowHeight(1, 32); // 1行目の高さを32ピクセルに
}
モックでの呼び出し記録です。
A2:A6.setWrap(true)
C2:C6.setNumberFormat("#,##0")
D2:D6.setNumberFormat("#,##0\"円\"")
E2:E6.setNumberFormat("yyyy-mm-dd")
E2:E6.setHorizontalAlignment("center")
F2:F6.setNumberFormat("0.0%")
C2:D6.setHorizontalAlignment("right")
sheet.setColumnWidth(1, 220)
sheet.setColumnWidths(2, 5, 100)
sheet.setRowHeight(1, 32)
折り返したい列は setColumnWidth で幅を決めて setWrap(true)、内容に合わせたい列は autoResizeColumns と、列ごとに役割を分けると整えやすくなります。
書式を消す:clearFormat・clearFormats・条件付き書式の削除
// 書式を消す3通り
function clearSamples() {
const sheet = SpreadsheetApp.getActiveSheet();
sheet.getRange('A2:F6').clearFormat(); // 範囲の書式だけ消す(値は残る)
sheet.getRange('H1:J6').clear({ formatOnly: true }); // 同じく書式だけ
sheet.clearFormats(); // シート全体の書式を消す(値は残る)
sheet.clearConditionalFormatRules(); // 条件付き書式のルールをすべて消す
}
| 消したいもの | 対象 | メソッド | 値 |
|---|---|---|---|
| 範囲の書式 | Range | clearFormat() または clear({ formatOnly: true }) |
残る |
| シート全体の書式 | Sheet | clearFormats() |
残る |
| 条件付き書式のルール | Sheet | clearConditionalFormatRules() |
残る |
| 範囲の値 | Range | clearContent() |
消える(書式は残る) |
| 範囲の値と書式 | Range | clear() |
消える |
| 罫線だけ | Range | setBorder(false, false, false, false, false, false) |
残る |
範囲用は clearFormat(s なし)、シート用は clearFormats(s あり)と名前が1文字違います。条件付き書式のルールは直接の書式とは別に管理されているので、ルールを消すときは専用のメソッドを呼びます。
確かめて分かったこと
- 列幅・行の高さ・固定は Range ではなく Sheet のメソッドです。
sheet.getRange(...).setColumnWidth(...)という書き方は型定義に無く、sheet.setColumnWidth(列番号, 幅)と書きます。 setBorderのnullは「変えない」、falseは「消す」です。外枠だけを引き直したいときに内側をfalseにすると、内側の線が消えます。setConditionalFormatRulesは追加ではなく置き換えです。モックで同じ関数を2回呼んでもルールは1件のままで、getConditionalFormatRules()にpushしたときだけ2件になりました。- 横の配置は
'left'・'center'・'right'、縦の配置は'top'・'middle'・'bottom'で、縦の中央は'center'ではなく'middle'です。 - 書式文字列の
mは、前後に時や秒があると「分」として扱われます。 日付と時刻を1つの書式に書くときは、月をMMと書くと区別がはっきりします。 - 二次元配列版のメソッドは、範囲と配列の行数・列数をそろえて渡します。 範囲を
getRange(2, 1, numRows, lastCol)と取ったら、配列もnumRows行 ×lastCol列で作ります。
よくある質問
Q. setBackground と setBackgrounds の違いは?
A. 渡す引数が、色の文字列1つか、色の二次元配列かの違いです。範囲全体を同じ色にするなら setBackground、セルごとに色を変えるなら範囲と同じ大きさの配列を作って setBackgrounds を使います。
Q. GAS で条件付き書式を設定するには?
A. SpreadsheetApp.newConditionalFormatRule() で条件・見た目・範囲を指定して build() し、sheet.setConditionalFormatRules([ルール]) で設定します。既存のルールを残すなら、getConditionalFormatRules() の結果に push してから設定します。
Q. 列幅を自動調整できないときは?
A. autoResizeColumns は Sheet のメソッドなので、sheet.autoResizeColumns(開始列, 列数) の形で呼びます。開始列は 1 から数え、2つ目の引数は終了列ではなく列数です。
Q. 罫線を消すには?
A. range.setBorder(false, false, false, false, false, false) で、その範囲の外枠と内側の線を消せます。色や表示形式もまとめて消してよいなら range.clearFormat() が使えます。
Q. 書式だけを別の範囲に写すには?
A. 型定義では、range.copyTo(destination, SpreadsheetApp.CopyPasteType.PASTE_FORMAT, false) の形で書式だけを貼り付ける指定ができます。見出し行の装飾を別のシートにそろえるときに使えます。
まとめ
- 表を整える定番は、見出し行の太字+背景色+中央寄せ+固定、表全体の罫線、列幅の自動調整。1関数にまとめておくと使い回せる
- 色・文字・配置・表示形式・罫線は Range、列幅・行の高さ・固定は Sheet のメソッド
- 1色なら
setBackground、セルごとなら二次元配列のsetBackgrounds。配列は範囲と同じ行数×列数にする - 値が変わるたびに色を変えたいなら条件付き書式。
setConditionalFormatRulesはルール一式の置き換え setBorderは上・左・下・右・縦・横の順。trueは引く、falseは消す、nullは変えないsetNumberFormatは表示だけを変える。#,##0・0.0%・yyyy/MM/ddの3つから覚えると応用しやすい- 書式を消すのは
clearFormat(範囲)とclearFormats(シート)、条件付き書式はclearConditionalFormatRules
参考・出典
- Google Apps Script リファレンス「Class Range」 https://developers.google.com/apps-script/reference/spreadsheet/range (2026-10-06 閲覧)
- Google Apps Script リファレンス「Class Sheet」 https://developers.google.com/apps-script/reference/spreadsheet/sheet (2026-10-06 閲覧)
- Google Apps Script リファレンス「Class ConditionalFormatRuleBuilder」 https://developers.google.com/apps-script/reference/spreadsheet/conditional-format-rule-builder (2026-10-06 閲覧)
- Google Apps Script リファレンス「Enum BorderStyle」 https://developers.google.com/apps-script/reference/spreadsheet/border-style (2026-10-06 閲覧)
- Google Sheets API「Number format patterns」 https://developers.google.com/sheets/api/guides/formats (2026-10-06 閲覧)
- Google Apps Script「Extending Google Sheets」 https://developers.google.com/apps-script/guides/sheets (2026-10-06 閲覧)
- 型定義パッケージ @types/google-apps-script 2.0.13(npm)
本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。
(記載例)出典:株式会社RJC「GASスプレッドシート書式設定一覧|背景色・罫線・列幅」
株式会社RJC ― SI事業・SES事業・AI駆動開発。RJCは一緒に成長を楽しめる会社です。
WE ARE HIRING
RJCで一緒に開発しながら、
成長を楽しみませんか?
RJCは、Web・モバイル・AIを活用した開発プロジェクトで、テックリードやPM・PMOも活躍するシステム開発会社です。会社を知る、待遇を確かめる、話を聞いてみる。気になるところ見てみてください!
- 127日年間休日
- 12時間平均残業時間
- 毎日ガチャ遊びココロも大切にする福利厚生。アマギフなどの賞品ラインナップ!
ほかにも、チケットレストラン、書籍読み放題、2年ごとの慰労報奨(休暇 or 金一封)、11期連続の黒字決算。