2022/09/04に更新

【GASで時短】選択範囲で使われている文字色、背景色をカウントする

スプレッドシート小技

シートで選択したセル範囲に、文字色や背景色がいくつ使われているかを調べるGoogle Apps Scriptです。色の塗り分けで表現された資料に直面したときに使えるかも・・・?

こんな悩みを解決します


  • セルの背景色や文字色でデータが表現されてる・・・こんなの数えてられない・・・

用意するもの


特にありません。今お使いのスプレッドシートに組み込めます。

このスクリプトで出来ること


  • シートで選択されている範囲の「背景色」と「文字色」が何回出現するかカウントします。
  • 色はカラーコードで表現されるためわかりにくいですが・・・。

使い方


1.スクリプトの実行

このようなシートをサンプルとして用意しました。
5色で塗られたセルと文字です。

このスクリプトは選択中のセルに対して動作します。
カウントしてほしい範囲を選択します。

上のメニューにある「スクリプト実行」から「選択セルの背景色、文字色をカウントする」を実行します。

少し待つとこのように結果が表示されます。
使われているカラーコードとそれが何回(何セルで)使われているかが集計されます。
RGBで表現されるので色がイメージしにくいですね・・・。

使った色は背景色も文字色もカラーパレット上部にある「スタンダード」カラーですが、文字色についてGASで取得すると「ACCENT1」のように表示されてしまうようです。

スクリプト


/**
 * このスクリプトの説明、使い方はこちら。
 * https://myfunc.jp/items/00139/index.html
 */

function onOpen() {
  // スプレッドシートを開いたときに実行される関数

  // UIの取得
  const ui = SpreadsheetApp.getUi()

  // メニューの表示名
  const menu = ui.createMenu('スクリプト実行');

  // メニューに追加するボタン
  menu.addItem('選択セルの背景色、文字色をカウントする', 'count_bgcolor_fontcolor');

  // メニューを画面に追加する
  menu.addToUi();
}


function count_bgcolor_fontcolor() {

  // アクティブなスプレッドシートのオブジェクトを取得
  const ss = SpreadsheetApp.getActiveSpreadsheet();

  // アクティブなシートを取得
  const sheet = ss.getActiveSheet();

  // シート上で選択されている範囲を取得
  const active_range = sheet.getActiveRange();

  // 選択範囲内の背景色を取得
  const backgrounds = active_range.getBackgrounds();

  // 選択範囲内のリッチテキスト情報を取得
  const richtexts = active_range.getRichTextValues();

  // 結果を格納するオブジェクトを用意
  const found_bgcolor = {}; // 背景色用
  const found_fontcolor = {}; // 文字色用

  // 範囲内のセルの数だけループ
  for (let i = 0; i < backgrounds.length; i++) { // 行のループ

    for (let j = 0; j < backgrounds[i].length; j++) { // 列のループ

      // 背景色の色コードを取得
      let bgcolor = backgrounds[i][j];

      // 背景色の色コードがkeyに存在するかどうかをチェックする
      if (bgcolor in found_bgcolor) {

        // この背景色が出現するのが2回目以降ならすでにkeyが存在するので加算
        found_bgcolor[bgcolor]++;
      } else {

        // 初回の出現なら1をセット
        found_bgcolor[bgcolor] = 1;
      }

      // 文字色を取得する
      let fontcolor = richtexts[i][j].getTextStyle().getForegroundColor();

      // 文字色がkeyに存在するかチェックする
      if (fontcolor in found_fontcolor) {

        // この文字色が出現するのが2回目以降ならすでにkeyが存在するので加算
        found_fontcolor[fontcolor]++;

      } else {

        // 初回の出現なら1をセット
        found_fontcolor[fontcolor] = 1;
      }
    }
  }

  // オブジェクトのままだと使いにくいので配列に変換
  const array_bgcolor = Object.entries(found_bgcolor);
  const array_fontcolor = Object.entries(found_fontcolor);

  // アラートを表示するためにUIオブジェクトを取得
  const ui = SpreadsheetApp.getUi();

  // 結果を画面に表示
  ui.alert('【背景色】\n' + array_bgcolor.join('\n') + '\n\n【文字色】\n' + array_fontcolor.join('\n'));

}

関連するアプリ


【GASで時短】同じ背景色のセルを選択状態にする

選択したセルと同じ背景色のセルを選択状態にするGoogle Apps Scriptです。細かく色分けされたセルの色を変えたくなったときにどうぞ。

【GASで時短】同じ文字色のセルを選択状態にする

文字色が同じセルを選択状態にしてくれるGoogle Apps Scriptです。特定の文字色をまとめて変えたくなったときにどうぞ。

【GASで時短】同じフォントサイズのセルを選択状態にする

同じフォントサイズのセルを選択状態にしてくれるGoogle Apps Scriptです。一部のフォントサイズをまとめて変えたくなったときなどにどうぞ。

【GASで時短】選択されているセルの数をカウントする

スプレッドシートで選択している範囲の「選択中のセルの数」「値が入っているセル」「数式が入っているセル」をカウントするGoogle Apps Scriptです。

【GASで整頓】シート上にある画像の幅、高さを揃える(縦横比固定)

スプレッドシートに貼り付けてある画像の高さ、幅を揃えてくれるGoogle Apps Scriptです。縦横比は維持します。拾ってきた素材のサイズがバラバラで揃えたいときに。

【GASで整頓】シート上にある画像をすべて正方形にする

スプレッドシートに貼り付けてある画像を、指定したサイズで正方形にするGoogle Apps Scriptです。

タグ一覧

最新のアプリ

人気のアプリ

ページトップに戻る
myfunc.jp