GASでスプレッドシートの指定セルからフォント名を取得する方法徹底解説

Google Apps Script(GAS)を使ってスプレッドシートをカスタマイズするなら、フォントの取得と設定は避けて通れんばい!この記事では、getFontFamily()メソッドの基本から応用まで、わかりやすく解説していくけ。


スポンサーリンク

1. getFontFamily()とは?

getFontFamily()メソッドは、スプレッドシートのセルや範囲のフォント名を取得するための機能ばい。

基本的な使い方

const range = sheet.getRange("B2");
const font = range.getFontFamily();
Logger.log(font); // 例: "Arial"

もし範囲を指定したら、左上のセル(開始セル)のフォントだけ取得されるけん、注意しとくとよかばい。

const range = sheet.getRange("B2:D4");
const font = range.getFontFamily(); // B2のフォントが取得される

2. 範囲内のフォントを一括取得

複数セルのフォント情報を取得するには? getFontFamilies()を使えば、指定範囲の全セルのフォント情報が二次元配列で取得できるばい!

const range = sheet.getRange("B2:D4");
const fontMatrix = range.getFontFamilies();
fontMatrix.forEach(row => row.forEach(font => Logger.log(font)));

大規模データを扱うときは、バッチ処理キャッシュを活用すると効率がよくなるばい!

function processLargeRange() {
  const sheet = SpreadsheetApp.getActiveSheet();
  const dataRange = sheet.getDataRange();
  const fonts = dataRange.getFontFamilies();
  
  const modifiedFonts = fonts.map(row =>
    row.map(font => font === 'Arial' ? 'Helvetica' : font)
  );
  
  dataRange.setFontFamilies(modifiedFonts);
}

3. フォントの動的制御

フォントを変更するときは、setFontFamily()setFontFamilies()を使うばい。

// 単一セルのフォント変更
sheet.getRange("A1").setFontFamily("Times New Roman");

// 範囲に一括適用
sheet.getRange("B2:D10").setFontFamily("Courier New");

条件付きフォント変更の実装

例えば、数値が1000を超えるセルだけフォントを変更することもできるばい。

function applyConditionalFonts() {
  const sheet = SpreadsheetApp.getActiveSheet();
  const range = sheet.getRange("A1:C10");
  const values = range.getValues();
  const fonts = range.getFontFamilies();

  const newFonts = fonts.map((row, i) =>
    row.map((font, j) => values[i][j] > 1000 ? 'Impact' : 'Cambria')
  );
  
  range.setFontFamilies(newFonts);
}

4. フォント設定のトラブルシューティング

特定のフォントでnullが返る場合の対策 カスタムフォントなどでフォント名が取得できないことがあるばい。その場合は、デフォルトフォントを設定するのがオススメじゃ!

function getSafeFontFamily(range) {
  const font = range.getFontFamily();
  return font || 'Arial';
}

大規模データ処理の最適化 スプレッドシートの大規模データ処理では、バッチ処理を意識して負荷を減らすのがポイントばい!

function optimizeFontProcessing() {
  const sheet = SpreadsheetApp.getActiveSheet();
  const startRow = 2;
  const batchSize = 500;
  
  for (let i = 0; i < 1000; i += batchSize) {
    const range = sheet.getRange(i + startRow, 1, batchSize, 10);
    const fonts = range.getFontFamilies();
    
    const newFonts = fonts.map(row => row.map(font => font === 'Comic Sans MS' ? 'Arial' : font));
    range.setFontFamilies(newFonts);
  }
}

5. まとめ

  • getFontFamily()はセルのフォント名を取得する
  • getFontFamilies()を使えば複数セルのフォントをまとめて取得可能
  • フォント設定はsetFontFamily()setFontFamilies()で変更できる
  • 大規模データを扱うときはバッチ処理で負荷を軽減
  • フォントが取得できないときは、デフォルト値を設定するのがオススメ

スプレッドシートのフォントを自由自在に操って、見やすいドキュメントを作成していこうじゃ!


コメント

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