こんにちは!
Yuki (@yukibnb) です。
今回はGoogle Apps Script(GAS)を使ってスプレッドシートのセルの背景色(塗りつぶしの色)を取得する方法を紹介します。
では見ていきましょう!
はじめに
今回は上記「売上表」シートを例に使用します。
紹介する方法は2種類です。
- 《getBackground》単一セルの背景色を取得する
- 《getBackgrounds》複数セルの背景色を取得する
状況に応じてお好きな方法を使用ください。
《getBackground》単一セルの背景色を取得する
コピペでOK!単一セルの背景色を取得するGAS
単一セルの背景色を取得したい場合、getBackgroundメソッドを使用します。
例えば「売上表シートのB4セルの背景色を取得したい」という場合には以下のように書きます。
var ss = SpreadsheetApp.getActiveSpreadsheet(); //シート名は置き換えてください var sh = ss.getSheetByName("売上表"); //B4セルの背景色を取得する var bgColor = sh.getRange(4,2).getBackground(); //ログを確認 Logger.log(bgColor);
上記コードを実行すると変数bgColor
にB4セル(「タイ」と入力されたセル)の背景色が文字列で格納されます。
ログを確認してみましょう。
getRange
を使ったセル範囲の取得(指定)方法がよくわからない場合、以下記事を参照ください。
【図解あり!GAS基本操作】スプレッドシートのセル範囲や値を取得する方法まとめ
色はカラーコードで表される
B4セルはオレンジ色ですが、ログには"Orange"と表示されずに"#ff9900"という文字列が表示されています。
"#ff9900"のように#とそれに続く6桁の英数字からなるコードをカラーコードと呼びます。
WEBの世界ではカラーコードを用いることで色を管理・表現します。
「カラーコードから色」「色からカラーコード」を検索できるサイトは沢山ありますので、難しく考えなくても大丈夫です。"#ff9900"を以下ウェブサイトで確認すると、確かにオレンジ色ですね。
www.color-sample.com
カラーコードは大文字・小文字の区別をしません。そのため "#ff9900" と "#FF9900" は同一です。
《getBackgrounds》複数セルの背景色を取得する
コピペでOK!複数セルの背景色を取得するGAS
複数セルの背景色を取得したい場合、getBackgroundsメソッドを使用します。
例えば「売上表シートのA1~E4セルの背景色を取得したい」という場合には以下のように書きます。
var ss = SpreadsheetApp.getActiveSpreadsheet(); //シート名は置き換えてください var sh = ss.getSheetByName("売上表"); //A1~E4セルの背景色を取得する var bgColors = sh.getRange(1,1,4,5).getBackgrounds(); //ログを確認 Logger.log(bgColors);
上記コードを実行すると変数bgColors
にA1~E4セルの背景色が二次元配列で格納されます。
ログを確認してみましょう。
カラーコードが二次元配列で格納される
ログを確認するとこのように表示されます。このままだと見にくいので改行すると以下のようになります。
//変数bgColorsのログ [[#434343, #434343, #434343, #434343, #434343], [#ffff00, #ffff00, #ffff00, #ffff00, #ffff00], [#ffffff, #ffffff, #ffffff, #ffffff, #ffffff], [#ff9900, #ff9900, #ff9900, #ff9900, #ff9900]]
それぞれ以下のリンクからカラーコードの色を確認してください。
#434343の色見本 - color-sample.com
#FFFF00の色見本 - color-sample.com
#FFFFFFの色見本 - color-sample.com
#FF9900の色見本 - color-sample.com
実際の売上表シートのA1~E4セルの背景色と同じ色ですね。
セルに背景色が設定されていない場合、"#ffffff" (白)が格納されます。
二次元配列を処理しよう
現在変数bgColors
にはA1~E4セルの背景色が二次元配列で格納されています。
変数bgColors
に対してループなどの処理をすることで、高速で特定のセル・行・列の背景色を取り出したり、変更したりすることができます。
例えば「背景色が"#ff9900"のセルの数をカウントする」というような処理も高速で行うことができます。
二次元配列の取り扱いについては以下記事で図入りでやさしく解説していますので、よければご覧ください。
・【超初心者向け】二次元配列をやさしく図入り解説
・【初心者向けGAS】一次元配列の要素を追加・削除する方法をやさしく解説
・【初心者向けGAS】二次元配列の要素を追加・削除する方法をやさしく解説
・【初心者向けGAS】二次元配列のループの処理順序を徹底解説
まとめ
今回はGoogle Apps Script(GAS)を使ってスプレッドシートのセルの背景色(塗りつぶしの色)を取得する方法を紹介しました。
ふたつめのgetBackgrounds
には様々な活用方法があるため、また別の機会に実践編として紹介します。
是非ご期待ください!