GASでスプレッドシートの指定範囲から文字色コードを効率的に取得する方法

Google Apps Script(GAS)を使ってスプレッドシートの文字色を取得したい?それなら getFontColors() メソッドの使い方を押さえておくべきばい!この記事では、このメソッドの基本から応用まで、実践的なコード例を交えて解説するけん、ぜひ最後まで読んでみてな!

スポンサーリンク

getFontColors() とは?

getFontColors() は、スプレッドシートの特定範囲のセルの文字色を取得するためのメソッドじゃ。Range クラスのインスタンスメソッドであり、取得結果は二次元配列(String[][])で返ってくるっちゃね。

例えばこんな感じのデータが返るばい!

[
  ['#ff0000', '#00ff00', '#0000ff'],
  ['#ffffff', '#000000', '#cccccc']
]

各セルの文字色が CSS カラーコードの形式で返るとよ。

getFontColors() の基本的な使い方

まずはシンプルなコード例を見てみようさ。

function fetchFontColors() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('DataSheet');
  const targetRange = sheet.getRange('B2:D5');
  const colorMatrix = targetRange.getFontColors();
  
  colorMatrix.forEach((row, rowIndex) => {
    row.forEach((color, colIndex) => {
      console.log(`Cell ${String.fromCharCode(66 + colIndex)}${rowIndex + 2}: ${color}`);
    });
  });
}

このコードを実行すると、B2:D5 の範囲内の文字色がコンソールに表示されるけん、試してみてな!

getFontColors() を応用してみよう!

条件付き書式と組み合わせる

文字色が赤(#ff0000)で、数値が100を超えるセルに背景色を付与する例ばい。

function highlightCustomFormattedCells() {
  const sheet = SpreadsheetApp.getActiveSheet();
  const dataRange = sheet.getRange('A1:Z1000');
  const values = dataRange.getValues();
  const colors = dataRange.getFontColors();

  values.forEach((row, i) => {
    row.forEach((value, j) => {
      if (colors[i][j] === '#ff0000' && value > 100) {
        sheet.getRange(i+1, j+1).setBackground('#fff2cc');
      }
    });
  });
}

これで「赤字で100超え」のセルにハイライトを付けられるばい!

色の使用頻度を集計する

スプレッドシートの特定範囲で、どの色がどれくらい使われているかを調べる方法ち。

function analyzeColorDistribution() {
  const colors = SpreadsheetApp.getActive()
    .getRange('MonthlyData')
    .getFontColors()
    .flat();

  const colorCount = colors.reduce((acc, color) => {
    acc[color] = (acc[color] || 0) + 1;
    return acc;
  }, {});

  console.log('Color Distribution:', colorCount);
}

色の分布を把握できるけん、データの可視化にも活かせるばい!

パフォーマンスを最適化する方法

大量のセルを処理する場合、1つずつ処理すると遅いっちゃ。そこでバッチ処理を使って最適化するばい!

function bulkColorProcessing() {
  const sheet = SpreadsheetApp.getActiveSheet();
  const fullRange = sheet.getDataRange();
  const colors = fullRange.getFontColors();
  
  colors.flat().forEach((color, index) => {
    const row = Math.floor(index / colors[0].length) + 1;
    const col = (index % colors[0].length) + 1;
    if (color === '#999999') {
      sheet.getRange(row, col).setFontColor('#666666');
    }
  });
}

これで大規模データもサクサク処理できるさ!

まとめ

GAS の getFontColors() を活用すれば、スプレッドシートの文字色を自在に操作できるばい!基本の使い方から応用技術、パフォーマンス最適化まで、ぜひ試してみてな!

これからも GAS をどんどん活用して、便利なスプレッドシートを作っていこうばい!

コメント

タイトルとURLをコピーしました