1. ホーム
  2. /
  3. [GAS]
  4. /
  5. 【GAS】getFontLine()でセルの下線・取り消し線を判定する方法

【GAS】getFontLine()でセルの下線・取り消し線を判定する方法

【GAS】getFontLine()でセルの下線・取り消し線を判定する方法

Google Apps Script (GAS)で、スプレッドシートの特定の行やセルに「取り消し線が引かれていたら処理対象外にする」といった自動化を実装したいと考えたことはありませんか?

セルのテキストに設定された下線取り消し線といった文字装飾は、見た目だけでなく、データの状態を示すマーカーとしても活用できます。

この記事では、セルの線種を取得するgetFontLine()メソッドと、その複数セル版であるgetFontLines()の使い方を、基本的な構文から実践的な業務自動化のコード例まで詳しく解説します。

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

getFontLine()とは?

getFontLine()は、指定したセルの文字装飾(フォント線)の種類を文字列で返すRangeオブジェクトのメソッドです。

基本構文と戻り値

非常にシンプルで、対象のRangeオブジェクトに対して呼び出すだけです。

const range = SpreadsheetApp.getActiveSheet().getRange("A1");
const fontLine = range.getFontLine();

戻り値は、以下の3種類の文字列のいずれかです。

  • 'underline': セルに下線が設定されている場合
  • 'line-through': セルに取り消し線が設定されている場合
  • 'none': 上記の装飾が何も設定されていない場合

基本的な使い方

特定のセルの状態を確認する簡単なサンプルコードを見てみましょう。

function checkCellFontLine() {
  const sheet = SpreadsheetApp.getActiveSheet();
  const targetCell = sheet.getRange('A1');
  const fontLine = targetCell.getFontLine();
  
  if (fontLine === 'underline') {
    console.log('A1セルには下線が引かれています。');
  } else if (fontLine === 'line-through') {
    console.log('A1セルには取り消し線が引かれています。');
  } else {
    console.log('A1セルに線はありません。');
  }
}

パフォーマンスの鍵!getFontLines()による一括取得

複数のセルを扱う際に、getFontLine()forループ内で呼び出すのは非効率です。API呼び出しが多発し、処理が遅くなる原因となります。

必ず**getFontLines()** (複数形) を使って、一度に情報を取得しましょう。

function checkMultipleCellFontLines() {
  const sheet = SpreadsheetApp.getActiveSheet();
  const range = sheet.getRange('A1:C5');
  const fontLinesMatrix = range.getFontLines(); // 複数セルを一括取得

  // 取得結果は二次元配列で返される
  fontLinesMatrix.forEach((row, rowIndex) => {
    row.forEach((status, colIndex) => {
      if (status !== 'none') {
        const cellName = String.fromCharCode(65 + colIndex) + (rowIndex + 1);
        console.log(`セル ${cellName} の装飾: ${status}`);
      }
    });
  });
}

getFontLines()は、対象範囲の各セルの装飾情報を二次元配列で返すため、API呼び出しを1回に抑えることができ、パフォーマンスが大幅に向上します。

実践的な活用例:キャンセルされた注文を検出する

getFontLine()は、実際の業務アプリケーションで非常に役立ちます。例えば、注文管理シートで「取り消し線が引かれた行 = キャンセルされた注文」として扱い、それを自動で検出する処理を実装してみましょう。

function processCancelledOrders() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('注文リスト');
  // A列の文字装飾をチェック対象とする
  const range = sheet.getRange('A2:A' + sheet.getLastRow()); 
  const fontLines = range.getFontLines();

  fontLines.forEach((row, index) => {
    // row[0]は各行のA列のステータス
    if (row[0] === 'line-through') {
      const rowNum = index + 2; // 配列のインデックスと行番号のズレを調整
      // キャンセル行の背景色をグレーに変更
      sheet.getRange(rowNum, 1, 1, sheet.getLastColumn()).setBackground('#cccccc');
      
      console.warn(`行 ${rowNum} の注文はキャンセルとして処理しました。`);
      // ここに在庫の戻し処理や、関係者への通知処理などを追加できる
    }
  });
}

このスクリプトは、A列に取り消し線が引かれている行全体をグレーアウトし、キャンセルされた注文であることを視覚的に分かりやすくします。

まとめ

getFontLine()およびgetFontLines()を使いこなすことで、スプレッドシート上の文字装飾をトリガーとした高度な自動化が可能になります。

  • 単一セル: getFontLine()で手軽にチェック。
  • 複数セル: パフォーマンスのために必ずgetFontLines()で一括取得する。
  • 応用: 「取り消し線 = 無効」のような業務ルールを定義し、データ検証やタスク管理の自動化に活かす。

本記事で紹介したテクニックを、ぜひあなたの業務改善に応用してみてください。

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

Class Range | Apps Script | Google for Developers

関連記事

【GAS高速化】getFontLines()で複数セルのフォント装飾を一括取得!API呼び出しを最適化

【GAS高速化】getFontLines()で複数セルのフォント装飾を一括取得!API呼び出しを最適化

Google Apps Script (GAS) でスプレッドシートの書式を扱う際、スクリプトの実行速度が遅くなる主な原因の一つが、APIの過剰な呼び出しです。特に、ループ処理の中でセル一つひとつの情報を取得するコードは、パフォーマンスを著しく低下させます。

この問題を解決し、スクリプトを劇的に高速化するのが**getFontLines()**メソッドです。

この記事では、getFontLine()(単数形)をループで使うことの非効率性を解説し、getFontLines()による一括取得がいかに重要かを、具体的なコードと共に徹底解説します。

GAS `getWraps()`でスプレッドシートのテキスト折り返しを一括制御!応用例と最適化

GAS `getWraps()`でスプレッドシートのテキスト折り返しを一括制御!応用例と最適化

Google Apps Script(GAS)でスプレッドシートを効率的に操作する際、セルのテキスト折り返し設定を一括で管理することは、大規模なデータセットの視認性を高め、プロフェッショナルなレポート作成において不可欠です。getWraps()メソッドは、このテキスト折り返し設定を複数のセルから一度に取得するための強力なツールです。

本記事では、GASのRange.getWraps()メソッドを徹底解説します。基本的な使い方から、データ量が多い場合のパフォーマンス最適化(キャッシュ活用)、さらには取得した情報を元にした列幅の自動調整、堅牢なスクリプト開発のためのエラー処理、そしてsetWraps()メソッドと連携した一括設定方法まで、具体的なコードを交えて分かりやすく紹介します。