Google Apps Script(GAS)でスプレッドシートの書式を操作する際、セルの文字色を詳細に扱いたい場面があります。本記事では、従来のgetFontColor()メソッドよりも高機能なgetFontColorObject()メソッドに焦点を当て、その基本的な使い方から応用テクニックまでを初心者にも分かりやすく解説します。

getFontColorObject()メソッドとは?
getFontColorObject()は、指定したセルのフォントカラーをColorオブジェクトとして取得するメソッドです。従来のgetFontColor()が16進数のカラーコード文字列(例: #ff0000)を返すのに対し、このメソッドは色をオブジェクトとして返すため、RGB値や透明度(アルファ値)といった、より詳細な情報にアクセスできます。
function getFontColorAsObject() {
const sheet = SpreadsheetApp.getActiveSheet();
const range = sheet.getRange("A1");
const colorObject = range.getFontColorObject();
// Colorオブジェクトから16進数文字列(#RRGGBB形式)に変換
const hexCode = colorObject.asRgbColor().asHexString();
Logger.log(hexCode);
}
注意: getFontColorObject()は単一セル(範囲指定の場合は左上のセル)の色情報を返します。
RGB値の取得と活用
Colorオブジェクトの大きな利点は、色を構成するRGB(赤・緑・青)の各成分値を個別に取得できることです。これにより、色に基づいたより複雑な条件分岐や計算が可能になります。
以下の例では、B2セルのフォントカラーを取得し、そのRGB値をC2セルに書き出します。
function getSingleCellRGB() {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Data');
const range = sheet.getRange("B2");
const color = range.getFontColorObject().asRgbColor();
const rgbValues = {
red: color.getRed(),
green: color.getGreen(),
blue: color.getBlue()
};
const rgbString = `RGB(${rgbValues.red}, ${rgbValues.green}, ${rgbValues.blue})`;
sheet.getRange("C2").setValue(rgbString);
}
16進数カラーコードへの変換
Web開発など他のシステムと連携する場合、16進数形式(#RRGGBB)のカラーコードが必要になることがよくあります。ColorオブジェクトのasHexString()メソッドを使えば、簡単に変換できます。
function convertFontColorToHex() {
const cell = SpreadsheetApp.getActiveSpreadsheet().getRange('A1');
const hex = cell.getFontColorObject().asRgbColor().asHexString();
Logger.log(`A1セルの16進数カラーコード: ${hex}`);
return hex;
}
複数セルのフォントカラーを一括取得する方法
多数のセルを扱う場合、一つずつ処理するのは非効率です。getFontColorObjects()(複数形)メソッドを使用すれば、指定範囲全体のフォントカラーをColorオブジェクトの二次元配列として一括で取得できます。
以下のスクリプトは、指定範囲内で文字色が赤(#ff0000)のセルを検出し、自動で「要確認」というメモを追加します。
function processRangeColorsInBulk() {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('SalesData');
const dataRange = sheet.getRange("A2:F100");
const colorMatrix = dataRange.getFontColorObjects();
colorMatrix.forEach((row, rowIndex) => {
row.forEach((colorObj, colIndex) => {
if (colorObj.asRgbColor().asHexString() === '#ff0000') {
sheet.getRange(rowIndex + 2, colIndex + 1)
.setNote('要確認: 赤文字の項目です');
}
});
});
}
getFontColor()との比較
getFontColor()とgetFontColorObject()の主な違いは、取得できる情報の粒度です。
| メソッド | 取得できる情報 | 主な用途 |
|---|---|---|
getFontColor() | 16進数カラーコードの文字列(例: #ff0000) | 単純な色の比較や設定。 |
getFontColorObject() | Colorオブジェクト(RGB値、透明度などを含む) | 詳細な色情報の分析、複雑な条件分岐、計算。 |
既存のコードをgetFontColor()から移行する場合は、以下のようにasHexString()を追加するだけで簡単に行えます。
// 旧方式
const oldColor = range.getFontColor(); // '#ff0000'
// 新方式
const newColor = range.getFontColorObject().asRgbColor().asHexString();
トラブルシューティング
デフォルトカラーの扱い
ユーザーが明示的に色を設定していないセルの場合、getFontColorObject()はデフォルトの色(通常は黒)を返します。テーマなどによって色が異なる場合もあるため、特定の色を期待する処理では注意が必要です。
まとめ
getFontColorObject()メソッドを使いこなすことで、スプレッドシートのフォントカラーをより柔軟かつ詳細に扱うことができます。
このメソッドは以下のような場面で特に役立ちます:
- 色分けされたデータの分析や自動処理
- 条件付き書式と連携した動的なデータ表現
- WebアプリケーションやCSSと連携したカラーマネジメント
GASの強力な機能を活用して、日々のスプレッドシート業務をさらに効率化しましょう。



GAS(Google Apps Script)を用いて、スプレッドシートのセルに入力された値・文字列の文字色(カラーコード)を取得するメソッドは単一セルの場合は『getFontColorObjectメソッド』、範囲の場合は『getFontC
getFontColor() セルの文字色を取得する。 サンプルコード // 現在アクティブなスプレッドシートを取得 var ss = SpreadsheetApp.getActiveSpreadsheet(); // そのスプレッドシートにある最初のシートを取得 var sheet = ss.getSheets()[0]; // そのシートにある B2:D4 のセル範囲を取得 var range = sheet.getRange(“B2:D4”); // そのセル範囲の最初のセルに設定されている文字色を取得しログに出力 Logger.log(range.getFontColor()); var ss = SpreadsheetApp.getActiveSpreadsheet(); // そのスプレッドシートにある最初のシートを取得 var sheet = ss.getSheets()[0]; // そのシートにある B2:D4 のセル範囲を取得 var range = sheet.getRange(“B2:D4”); // そのセル範囲の最初のセルに設定されている文字色を取得しログに出力 Logger.log(range.getFontColor()); 引数 無し。 戻り値 文字列 – 取得した文字色のカラーコード この記事が気に入ったら いいねしよう! […]