Google スプレッドシートで作業をしていると、特定の条件に基づいて複数のセルの文字色を変更したいことがあると思います。
Google Apps Script (GAS)を使えば、この作業を簡単に自動化することができます!
本記事では、GASを使ってGoogleスプレッドシートの複数セルの文字色を一括で自動変更する手順をご紹介します。
Google スプレッドシートで特定の文字だけ一部文字色を変える方法を知りたい方は、こちらの記事もご覧ください。
GASを使った複数セルの文字色を一括自動変更する手順
まずは、Googleスプレッドシートのサンプルデータと、GASのスクリプトエディタを準備していきます。
スプレッドシートとサンプルデータの作成
1.Google スプレッドシートを開く
まずは、Google スプレッドシートを開きます。
Google Chromeを開いて右上に表示されるGoogle アプリのアイコンを左クリックします。
そして、Google アプリ一覧から「スプレッドシート」を選択します。
下の画像のような画面に遷移するので、編集したいスプレッドシートを選択して開きます。
2.データを入力する
Googleスプレッドシートが開いたら、スクリプトを実行したいデータを入力していきます。
既に入力されている場合は、何もする必要はありません。
サンプルでは、下記のデータをA1:D11の範囲に貼り付けて使用しています。
従業員名 | 販売数 | 売上金額 | 顧客満足度 |
---|---|---|---|
山田太郎 | 45 | ¥67,500 | 4.2 |
佐藤花子 | 62 | ¥93,000 | 4.8 |
鈴木一郎 | 38 | ¥57,000 | 3.9 |
高橋美香 | 55 | ¥82,500 | 4.5 |
田中健太 | 70 | ¥105,000 | 4.7 |
伊藤由美 | 42 | ¥63,000 | 4.1 |
渡辺浩二 | 58 | ¥87,000 | 4.6 |
小林麻衣 | 33 | ¥49,500 | 3.8 |
中村翔太 | 65 | ¥97,500 | 4.9 |
加藤恵子 | 50 | ¥75,000 | 4.3 |
Google Apps Scriptエディタの準備
1.スクリプトを開く
メニューバーの「拡張機能」を左クリックし、「Apps Script」を選択します。
「Apps Script」を選択すると、スクリプトエディタが新しいタブで開きます。
2.エディタを空にする
デフォルトで作成されているmyFunction()
を削除し、空のエディタにします。
GASスクリプトの作成方法
条件に応じて、文字色を変更するスクリプトを作成します。
このスクリプトを使えば、指定した範囲内のセルで、条件を満たすセルの文字色を自動で変更することができます。
1.スクリプトを作成する(サンプルコード)
まず、新しいタブでスクリプトエディタが開かれたら、以下のスクリプトをコピーして貼り付け、プロジェクトを保存します。
function changeFontColors() {
// アクティブなスプレッドシートとシートを取得
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
// 色を変更したい範囲を指定(ここではB2:B11)
var range = sheet.getRange("B2:B11");
// 指定した範囲の値を2次元配列として取得
var values = range.getValues();
// 文字色を格納するための2次元配列を初期化
var colors = [];
// 各セルの値をチェックし、条件に応じて色を決定
for (var i = 0; i < values.length; i++) {
var row = [];
for (var j = 0; j < values[i].length; j++) {
// 値が50より大きい場合は赤色、それ以外は黒色に設定
if (values[i][j] > 50) {
row.push("red");
} else {
row.push("black");
}
}
colors.push(row);
}
// 決定した色を一括でセルに適用
range.setFontColors(colors);
}
スクリプトでは、下記の流れで該当する文字の色を変更しています。
解説が不要な方は、こちらから「スクリプトの実行」に進んでください。
1. アクティブシートの取得
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
では、現在アクティブなスプレッドシートを取得し、sheet
変数に格納しています。
これにより、スクリプトが操作するシートを指定しています。
2. データの取得
var range = sheet.getRange("B2:B11");
では、指定した範囲(B2:B11)のセルを取得します。var values = range.getValues();
では、指定した範囲の値を2次元配列として取得します。
指定する範囲は必要に応じて変更してください。
GASで複数の離れた範囲のセルを一度に操作した場合は、こちらの記事をご覧ください。
3. 色配列の初期化
var colors = [];
では、文字色を格納するための2次元配列を初期化します。
4. ループの開始
for (var i = 0; i < values.length; i++) {}
for (var j = 0; j < values[i].length; j++) {}
では二重ループで、各行と列を処理します。
5. 条件分岐
if (values[i][j] > 50) {}
では、各セルの値が50より大きい場合は赤色、それ以外は黒色を設定します。
条件分岐で設定する条件等は必要に応じて変更してください。
6. 決定した色の追加
row.push("red");
row.push("black");
で1行分の文字色情報をrow配列に順番に格納します。colors.push(row);
で完成した1行分の文字色情報rowを、colors配列に追加します。
これにより、colors
は以下のような構造になります:
colors = [
["black", "black", "black", "black"], // 1行目
["black", "red", "black", "black"], // 2行目
// ... 以下、行数分だけ続く
]
7. 色の適用
range.setFontColors(colors);
で、指定された範囲に一括でcolors配列に格納した文字色を適用します。
このとき、colors 配列のサイズが range のサイズと一致しない場合には、エラーが発生します。
そのため colors 配列を作成する際は、そのサイズに注意する必要があります。
2.スクリプトを実行する
スクリプトエディターのメニューバーで「changeFontColors」が選択されていることを確認し、「実行」ボタンを左クリックします。
初めて実行する際には、スクリプトに対する権限の承認が求められる場合がありますので、承認してください。
「このアプリは Google で確認されていません」と表示された場合は左下の詳細をクリックすると、「無題のプロジェクト(安全ではないページ)に移動」というリンクが表示されます。
このリンクをクリックすると次のページへ遷移できます。
3.実行結果を確認する
スクリプトが正常に実行されると、条件に応じてセルの文字色が変更されます。
サンプルでは、セルB3、B5、B6、B8、B10の 文字の色が赤色に変更されます。
応用例: 条件付き書式との連携
GASと条件付き書式を組み合わせることで、より柔軟な色変更が可能になります。
前項のスクリプトでは、セルの文字色が変更されるだけでしたが、本項では「条件付き書式」を適用してセルの文字色を自動的に変更するスクリプトをご紹介します。
GASスクリプトの作成方法
1.スクリプトを作成する(サンプルコード)
まず、スクリプトエディタで新しいスクリプトを追加します。
新しいスクリプトを追加できたら、下記のスクリプトを貼り付けて、「プロジェクトを保存」ボタンからスクリプトを保存します。
// 条件付き書式を使用する場合の関数
function applyConditionalFormatting() {
// アクティブなスプレッドシートとシートを取得
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
// 条件付き書式を適用する範囲を指定
var range = sheet.getRange("B2:B11");
// 新しい条件付き書式ルールを作成
var rule = SpreadsheetApp.newConditionalFormatRule()
.whenNumberGreaterThan(50) // 値が50より大きい場合
.setFontColor("red") // 文字色を赤に設定
.setRanges([range]) // 適用する範囲を指定
.build();
// 既存の条件付き書式ルールを取得
var rules = sheet.getConditionalFormatRules();
// 新しいルールを追加
rules.push(rule);
// 更新したルールをシートに適用
sheet.setConditionalFormatRules(rules);
}
スクリプトでは、下記の流れで該当する文字の色を変更しています。
解説が不要な方は、こちらから「スクリプトの実行」に進んでください。
1. アクティブシートの取得
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
では、現在アクティブなスプレッドシートを取得し、sheet
変数に格納しています。
これにより、スクリプトが操作するシートを指定しています。
2. データの取得
var range = sheet.getRange("B2:B11");
では、指定した範囲(B2:B11)のセルを取得します。
指定する範囲は必要に応じて変更してください。
3. 新しい条件付き書式ルールの作成
SpreadsheetApp.newConditionalFormatRule()
では、新しい条件付き書式ルールを作成します。.whenNumberGreaterThan(50)
で、値が50より大きい場合という条件を設定します。.setFontColor("red")
で、条件に合致した場合の文字色を赤に設定します。.setRanges([range])
で、適用する範囲を指定します。.build();
で、ルールをビルド(構築)します。
ここで設定する条件等は必要に応じて変更してください。
4. 新ルールの追加
まず、var rules = sheet.getConditionalFormatRules();
で、シートに既に設定されている条件付き書式ルールを取得します。
そして、rules.push(rule);
で、作成した新しいルールを既存のルールリストに追加します。
5. ルールの適用
最後にsheet.setConditionalFormatRules(rules);
で、更新したルールをシートに適用します。
2.スクリプトを実行する
スクリプトエディターのメニューバーで「applyConditionalFormatting()」が選択されていることを確認し、「実行」ボタンを左クリックします。
3.実行結果を確認する
スクリプトが正常に実行されると、条件に応じてセルの文字色が変更されます。
サンプルでは、セルB3、B5、B6、B8、B10の 文字の色が赤色に変更されます。
そして、「条件付き書式設定ルール」に新しいルールが追加されていることを確認します。
① 文字色が変更されているセルを右クリックし、メニューを表示します。
② メニューから「セルでの他の操作項目を表示」を左クリックで選択します。
③「条件付き書式」を左クリックすると、「条件付き書式設定ルール」が画面右側に表示されます。
「条件付き書式設定ルール」から、今回のサンプルでは「50より大きい値」という条件付き書式が追加されていることが確認できます。
まとめ
GASを使用することで、Google スプレッドシートの複数セルの文字色を効率的に一括変更できます。
条件付き書式と組み合わせることで、さらに多様な自動化が可能になります。
ぜひ、ご自身のGoogle スプレッドシートでも試してみてください!
Google スプレッドシートで特定の文字だけ一部文字色を変える方法を知りたい方は、こちらもご覧ください。
コメント