こんにちは!GoogleスプレッドシートをカスタマイズするのにGAS(Google Apps Script)を使ってる人、多いんじゃなかろうか?その中でも「セルの文字色を取得する方法」は、条件付き書式の拡張やデータ可視化にめちゃくちゃ便利なんだばい!
今回は、最新のGAS APIを踏まえながら、文字色取得の方法を基礎から応用までガッツリ解説していくけ!
1. 文字色を取得する基本メソッド
GASでは、セルの文字色を取得するには主に2つのメソッドがあるっちゃね。
getFontColor()
→ 旧式(非推奨)getFontColorObject()
→ 新推奨メソッド
従来はgetFontColor()
を使ってHEXコード(例:#ff0000
)を取得してたんじゃが、2023年以降のアップデートでgetFontColorObject()
が推奨されるようになったんじゃ。理由は、より柔軟な色情報の取り扱いが可能になったけんね。
getFontColorObject()の特徴
このメソッドを使うと、色をColorオブジェクトとして取得できるんじゃ!
Colorオブジェクトの主なプロパティ
プロパティ | 説明 |
---|---|
asHexString() | HEXコード(#RRGGBB 形式) |
asRgbColor() | RGB値(個別取得可) |
asThemeColor() | スプレッドシートのテーマカラー |
このオブジェクトを使えば、色の個別成分(R, G, B)を取得できたり、色を分析するのが楽になるっちゃね!
2. 実際に文字色を取得してみる!
① 単一セルの文字色を取得
function getSingleCellColor() {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
const targetCell = sheet.getRange("B2");
const colorObj = targetCell.getFontColorObject();
console.log("HEXコード:", colorObj.asHexString());
console.log("RGB値:", colorObj.asRgbColor().getRed() + "," +
colorObj.asRgbColor().getGreen() + "," +
colorObj.asRgbColor().getBlue());
}
これでセルB2の文字色がHEX形式とRGB形式で取得できるっちゃ!
② 複数セル範囲の文字色を一括取得
function getRangeColors() {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Data");
const range = sheet.getRange("A1:C3");
const colorMatrix = range.getFontColorObjects();
colorMatrix.forEach((row, rowIndex) => {
row.forEach((cellColor, colIndex) => {
console.log(`セル ${String.fromCharCode(65 + colIndex)}${rowIndex + 1}:`,
cellColor.asHexString());
});
});
}
これでA1からC3の範囲にあるすべてのセルの文字色を取得できるばい!
3. 取得した色を活用する応用テクニック
① 条件付き書式を動的に適用する
function applyDynamicFormatting() {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
const dataRange = sheet.getRange("A2:A100");
const colors = dataRange.getFontColorObjects();
colors.forEach((colorObj, index) => {
if (colorObj.asHexString() === "#ff0000") {
const targetCell = dataRange.offset(index, 0, 1, 1);
targetCell.setBackground("#fff2cc");
}
});
}
このコードを実行すると、文字色が赤(#ff0000)のセルだけ背景色を薄黄色(#fff2cc)に変更できるっちゃ!
② スプレッドシートの色使用状況を分析する
function analyzeColorUsage() {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
const fullRange = sheet.getDataRange();
const colorData = fullRange.getFontColorObjects();
const colorMap = new Map();
colorData.flat().forEach(colorObj => {
const hex = colorObj.asHexString();
colorMap.set(hex, (colorMap.get(hex) || 0) + 1);
});
console.log("カラー使用状況:");
colorMap.forEach((count, color) => {
console.log(`${color}: ${count}セル`);
});
}
このスクリプトを実行すると、スプレッドシート内で使われている色の種類とその使用頻度を取得できるっちゃ!
4. まとめ
getFontColor()
は古い!getFontColorObject()
を使うべし!- Colorオブジェクトの活用がカギ! HEX, RGB, テーマカラーまで取得可能!
- 色の分析や条件付き書式の拡張に活用できる!
スプレッドシートのデータをもっと見やすく、使いやすくするために、ぜひこのテクニックを活用してみてばい!

Class Range | Apps Script | Google for Developers
セルの文字色を取得する:getFontColor()【GAS】 | G Suite ガイド - G Suite ガイド:G Suite の導入方法や使い方を徹底解説!
getFontColor() セルの文字色を取得する。 サンプルコード // 現在アクティブなスプレッドシートを取得 var ss = SpreadsheetApp.getActiveSpreadsheet(); // そのスプレッドシート...

【GASで時短】同じ文字色のセルを選択状態にする
文字色が同じセルを選択状態にしてくれるGoogle Apps Scriptです。特定の文字色をまとめて変えたくなったときにどうぞ。
コメント