1. ホーム
  2. /
  3. [GAS]
  4. /
  5. 【GAS】getBackgrounds()で複数セルの背景色を高速に一括取得する方法

【GAS】getBackgrounds()で複数セルの背景色を高速に一括取得する方法

【GAS】getBackgrounds()で複数セルの背景色を高速に一括取得する方法

Google Apps Script (GAS)でスプレッドシートの自動化を行う際、何千ものセルの背景色を扱う処理でパフォーマンスに悩んでいませんか? getBackgrounds()は、そんな悩みを解決する最も高速なメソッドです。

この記事では、getBackgrounds()の基本から、パフォーマンスを最大化する実践的な使い方までを詳しく解説します。

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

getBackgrounds()とは?

getBackgrounds()は、指定した範囲の全セルの背景色を、16進数カラーコードの二次元配列として一括で取得するメソッドです。

function basicUsage() {
  const sheet = SpreadsheetApp.getActiveSheet();
  const range = sheet.getRange("A1:C2");

  // カラーコードの二次元配列を取得
  const colors = range.getBackgrounds();
  
  console.log(colors);
  // 出力例:
  // [['#ff0000', '#00ff00', '#0000ff'],  // 1行目の色 (A1, B1, C1)
  //  ['#ffffff', '#ffff00', '#00ffff']]  // 2行目の色 (A2, B2, C2)
}

API呼び出しを一度にまとめるため、ループ処理で1セルずつgetBackground()を呼び出すよりも劇的に高速です。

getBackgrounds() vs getBackgroundObjects()

getBackgrounds()は速度に特化している一方、getBackgroundObjects()Colorオブジェクトを返すため機能性に優れます。

メソッド戻り値こんな時に最適
getBackgrounds()String[][]とにかく速さを求める時。16進数文字列での比較で十分な場合に最適。
getBackgroundObjects()Color[][]RGB値やテーマカラーなど、色の詳細情報が必要な時

単純な色の比較であれば、getBackgrounds()が最も効率的です。

実践例1:特定の色を持つセルを検索する

getBackgrounds()は、getValues()と組み合わせることで、「特定の色を持つセルの値をリストアップする」といった処理を高速に実行できます。

function findCellsByColor() {
  const sheet = SpreadsheetApp.getActiveSheet();
  const range = sheet.getDataRange(); // シート全体のデータ範囲

  // ① 値と背景色をそれぞれ一括取得
  const values = range.getValues();
  const backgrounds = range.getBackgrounds();
  
  const targetColor = "#fff2cc"; // 検索したい色(薄い黄色)
  const results = [];

  // ② メモリ上でループ処理
  for (let i = 0; i < backgrounds.length; i++) {
    for (let j = 0; j < backgrounds[i].length; j++) {
      if (backgrounds[i][j] === targetColor) {
        results.push(values[i][j]);
      }
    }
  }

  console.log(results); // ['タスクA', '重要事項B'] のように出力
}

この**「一括取得 → メモリ上で処理」**のパターンが、GASのパフォーマンスチューニングの基本です。

実践例2:色情報を基に一括でセルを更新する

getBackgrounds()で取得した色情報を加工し、setBackgrounds()で一括更新する例です。「白色のセルだけを薄いグレーに塗り替える」といった一括置換処理を高速に行えます。

function replaceWhiteToGray() {
  const sheet = SpreadsheetApp.getActiveSheet();
  const range = sheet.getDataRange();

  // ① 背景色を一括取得
  const originalColors = range.getBackgrounds();
  
  // ② メモリ上で新しい色の二次元配列を作成
  const newColors = originalColors.map(row => {
    return row.map(color => {
      // 白色(#ffffff)なら薄いグレー(#f3f3f3)に置換
      return (color === "#ffffff") ? "#f3f3f3" : color;
    });
  });

  // ③ 背景色を一括更新
  range.setBackgrounds(newColors);
}

この方法なら、何千セルあっても数秒で処理が完了します。

まとめ

getBackgrounds()は、GASで複数セルの背景色を扱う上で、パフォーマンスを最優先する場合に最適なメソッドです。

  • 最速: 16進数カラーコードの二次元配列を返すため、オーバーヘッドが最も少ない。
  • バッチ処理の要: getValues()setBackgrounds()と組み合わせることで、大量のデータを効率的に処理できる。
  • シンプル: 戻り値が単純な文字列配列なため、扱いやすい。

色の詳細情報が不要な場合は、getBackgrounds()を積極的に活用し、高速で快適なスクリプトを目指しましょう。

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

Best Practices | Apps Script | Google for Developers

Learn best practices to improve the performance of your Apps Script projects.

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

セルの背景色を取得する | getBackground()【GAS】 – はじりつ

【GAS】スプレッドシートの背景色機能まとめ【サンプルソース付】

GAS開発者向けにスプレッドシートの背景色機能をすべてまとめました。重要なセルの背景色を変えればデータが際立ちますね。データを目立たせたい場合はフォント色の変更よりも効果的だと思います。RGB設定(赤・緑・青)や現在の色の取得などです。交互

セル範囲の背景色をセルごとに取得する:getBackgrounds()【GAS】 | G Suite ガイド - G Suite ガイド:G Suite の導入方法や使い方を徹底解説!

getBackgrounds() セル範囲の背景色をセルごとに取得する。 サンプルコード // 現在アクティブなスプレッドシートを取得 var ss = SpreadsheetApp.getActiveSpreadsheet(); // そのスプレッドシートにある最初のシートを取得 var sheet = ss.getSheets()[0]; // そのシートにある B5:C6 のセル範囲を取得 var range = sheet.getRange(“B5:C6”); // そのセル範囲に設定されている背景色をセルごとに取得 var bgColors = range.getBackgrounds(); // そのセル範囲の行数だけ処理 for (var i in bgColors) { // そのセル範囲の列数だけ処理 for (var j in bgColors[i]) { // そのセルに設定されているセルの背景色を取得しログに出力 Logger.log(bgColors[i][j]); } } var ss = SpreadsheetApp.getActiveSpreadsheet(); // […]

[GAS]セルの背景色をRGBやColorクラスで取得・設定する方法 -Rangeクラス-|テックアップライフ

Google Apps Script (GAS) でこのセル範囲のセルの背景色をRGBやColorクラスで取得・設定する

関連記事

【GAS】getBackground()でセルの背景色を取得・活用する最適な方法

【GAS】getBackground()でセルの背景色を取得・活用する最適な方法

Google Apps Script (GAS)でスプレッドシートを操作する際、「セルの色に応じて処理を分けたい」「ステータスごとに色を変えたい」といったニーズは頻繁に発生します。この記事では、セルの背景色を取得するgetBackground()getBackgrounds()メソッドの正しい使い方と、処理を高速化するための実践的なテクニックを解説します。

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

getBackground()とgetBackgrounds()の違い

GASでセルの背景色を取得するメソッドは2種類あり、対象となるセルの数によって使い分けます。

【GAS】getBackgroundObjects()で複数セルの背景色を高速・詳細に一括取得する方法

【GAS】getBackgroundObjects()で複数セルの背景色を高速・詳細に一括取得する方法

Google Apps Script (GAS)で大量のセルの背景色を扱う際、パフォーマンスと機能性の両立は重要な課題です。getBackgroundObjects()は、この課題を解決するための最も強力なメソッドの一つです。

この記事では、getBackgroundObjects()の基本的な使い方から、他のメソッドとの違い、そして実践的な活用法までを詳しく解説します。

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

GASにおける背景色取得メソッドの使い分け

GASにはセルの背景色を取得するメソッドが4つあります。それぞれの特徴を理解し、状況に応じて最適なものを選択することが重要です。