1. ホーム
  2. /
  3. [GAS]
  4. /
  5. 【GAS】getFontSizeとgetFontSizesの違いとは?セルのフォントサイズを正しく取得する方法

【GAS】getFontSizeとgetFontSizesの違いとは?セルのフォントサイズを正しく取得する方法

【GAS】getFontSizeとgetFontSizesの違いとは?セルのフォントサイズを正しく取得する方法

Google Apps Script (GAS)で、スプレッドシートのセルのフォントサイズを条件にして処理を自動化したい、と考えたことはありませんか? 例えば、「フォントサイズが12pt以上のセルだけ色を変える」といった処理です。

その際に使うのがgetFontSize()getFontSizes()ですが、この2つのメソッドの違いを正しく理解していないと、思わぬバグの原因になります。

この記事では、getFontSize()のよくある罠と、複数セルのフォントサイズを正しく高速に取得するためのgetFontSizes()の使い方を徹底解説します。

Google Apps Script 始め方 スプレッドシート 活用例
Google Apps Script 始め方 スプレッドシート 活用例 を各ショップで検索

getFontSize()のよくある罠:複数範囲に使うと…

getFontSize()は、指定したセルのフォントサイズを数値(単位:ポイント)で取得するメソッドです。しかし、複数セルの範囲(例: “A1:C3”)に対して使用すると、範囲全体のフォントサイズではなく、左上隅のセル(この場合はA1)の値だけが返されます。

function fontSizeTrap() {
  const sheet = SpreadsheetApp.getActiveSheet();
  // A1は10pt, B1は14pt, C1は18ptだとする
  const range = sheet.getRange("A1:C1"); 
  
  // 範囲を指定しているにもかかわらず、A1の値である「10」しか返ってこない
  const fontSize = range.getFontSize(); 
  
  console.log(fontSize); // 結果は「10」
}

これを知らずに使うと、「範囲内のフォントサイズが正しく取得できない」という問題に直面します。getFontSize()は、あくまで単一セル専用のメソッドだと覚えておきましょう。

複数セルのフォントサイズはgetFontSizes()で一括取得する

複数のセルのフォントサイズを正しく、かつ効率的に取得するための解決策が**getFontSizes()**(複数形)です。

このメソッドは、指定した範囲の全セルのフォントサイズを二次元配列 (Number[][]) として、たった1回のAPI呼び出しで取得します。

function correctWayToGetFontSizes() {
  const sheet = SpreadsheetApp.getActiveSheet();
  // A1は10pt, B1は14pt, C1は18pt
  const range = sheet.getRange("A1:C1");
  
  // API呼び出しは1回だけ!
  const fontSizes = range.getFontSizes(); 
  
  console.log(fontSizes); // 結果は [[10, 14, 18]]
  
  // 配列をループすれば、各セルの値にアクセスできる
  fontSizes[0].forEach(size => {
    console.log(`フォントサイズ: ${size}pt`);
  });
}

ループの中でgetFontSize()を何度も呼び出すのに比べて、API呼び出しが1回で済むため、パフォーマンスが劇的に向上します。

実践的コード例:特定のフォントサイズより大きいセルを強調表示する

getFontSizes()の実用例として、シート内で指定したサイズより大きいフォントが使われているセルを検出し、背景色を変えてハイライトするスクリプトを紹介します。

/**
 * データ範囲内で、フォントサイズが12ptより大きいセルを黄色でハイライトする
 */
function highlightLargeFonts() {
  const HIGHLIGHT_THRESHOLD = 12; // 強調表示するフォントサイズのしきい値
  
  const sheet = SpreadsheetApp.getActiveSheet();
  const range = sheet.getDataRange();
  
  // フォントサイズと背景色をそれぞれ一括取得
  const fontSizes = range.getFontSizes();
  const backgrounds = range.getBackgrounds();
  
  let isChanged = false;

  fontSizes.forEach((row, r) => {
    row.forEach((size, c) => {
      // しきい値より大きく、まだ色が設定されていないセルを対象
      if (size > HIGHLIGHT_THRESHOLD && backgrounds[r][c] !== '#ffff00') {
        backgrounds[r][c] = '#ffff00'; // 背景を黄色に変更
        isChanged = true;
      }
    });
  });

  // 変更があった場合のみ、一括で書き込む
  if (isChanged) {
    range.setBackgrounds(backgrounds);
  }
}

このコードは、読み込み(getFontSizes, getBackgrounds)と書き込み(setBackgrounds)をすべて一括処理で行う、非常に効率的な実装になっています。

まとめ

GASでセルのフォントサイズを扱う際の鉄則は、以下の通りです。

  • 単一セルのサイズを取得したい場合のみ、getFontSize() を使う。
  • 複数セルを扱う場合は、必ず getFontSizes() を使って一括取得する。
  • getFontSize()を複数セル範囲に使うと、左上のセルの値しか返らないことを常に意識する。

この2つのメソッドの違いを正しく理解し、常に「一括処理」を意識することが、バグが少なく高速なスクリプトを開発するための鍵となります。

Google Apps Script 始め方 スプレッドシート 活用例
Google Apps Script 始め方 スプレッドシート 活用例 を各ショップで検索
Class Range | Apps Script | Google for Developers

Class Range | Apps Script | Google for Developers

関連記事

【GAS高速化】getFontSizes()でフォントサイズを一括取得!API呼び出しを激減させる方法

【GAS高速化】getFontSizes()でフォントサイズを一括取得!API呼び出しを激減させる方法

Google Apps Script (GAS)で大量のセルの書式を扱う際、スクリプトの実行速度が遅いと感じたことはありませんか?その原因は、十中八九ループ処理の中でのAPIの連続呼び出しです。

セルのフォントサイズを取得する際、getFontSize()をループで回すのは最も避けるべき実装パターンです。

この記事では、パフォーマンスを劇的に改善するための必須メソッド**getFontSizes()**に焦点を当て、その効果的な使い方と、取得した二次元配列データを活用する実践的なテクニックを解説します。

【GASスプレッドシート】getVerticalAlignments()で複数セルの垂直配置を一括取得・SEO最適化

【GASスプレッドシート】getVerticalAlignments()で複数セルの垂直配置を一括取得・SEO最適化

Google Apps Script (GAS) を用いてスプレッドシートのレイアウトを調整する際、特に大規模なデータや複数シートを扱う場合には、複数セルの「垂直配置」(上寄せ、中央揃え、下寄せ)を効率的に管理することが、データの視認性やデザインの整合性を保つ上で非常に重要になります。getVerticalAlignments()メソッドは、このニーズに応える強力な一括取得機能を提供します。

本記事では、GASのRange.getVerticalAlignments()メソッドを徹底解説します。複数セルの垂直配置を二次元配列として一括取得する基本から、getVerticalAlignment()との違い、setVerticalAlignments() / setVerticalAlignment()による垂直配置の効率的な設定方法、さらにはコンテンツ長や条件に応じた自動配置調整、変更履歴の記録、パフォーマンス最適化といった実践的な応用例まで、具体的なコードを交えて分かりやすく紹介します。