Yuki's bnb blog

こんにちは!Yukiといいます。本業のかたわら大阪で2016年夏から民泊運営のお手伝いをしています。民泊業務に関する様々なことを自動化・効率化したいと思い日々活動しています。 お気軽にコメント・お問い合わせください :) TOEICスコア 985

【コピペでOK!GAS基本操作】セルの背景色を取得する方法

f:id:yukibnb:20200712132113p:plain

こんにちは!
Yuki (@yukibnb) です。

今回はGoogle Apps Script(GAS)を使ってスプレッドシートのセルの背景色(塗りつぶしの色)を取得する方法を紹介します。

では見ていきましょう!

 

はじめに

f:id:yukibnb:20200712132718p:plain

今回は上記「売上表」シートを例に使用します。

紹介する方法は2種類です。

  • getBackground》単一セルの背景色を取得する
  • getBackgrounds》複数セルの背景色を取得する

状況に応じてお好きな方法を使用ください。

 

《getBackground》単一セルの背景色を取得する

コピペでOK!単一セルの背景色を取得するGAS

f:id:yukibnb:20200712133237p:plain

単一セルの背景色を取得したい場合、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基本操作】スプレッドシートのセル範囲や値を取得する方法まとめ

 

色はカラーコードで表される

f:id:yukibnb:20200712134956p:plain

 
B4セルはオレンジ色ですが、ログには"Orange"と表示されずに"#ff9900"という文字列が表示されています。

"#ff9900"のように#とそれに続く6桁の英数字からなるコードをカラーコードと呼びます。

WEBの世界ではカラーコードを用いることで色を管理・表現します。

「カラーコードから色」「色からカラーコード」を検索できるサイトは沢山ありますので、難しく考えなくても大丈夫です。"#ff9900"を以下ウェブサイトで確認すると、確かにオレンジ色ですね。
www.color-sample.com

 

ヒント

カラーコードは大文字・小文字の区別をしません。そのため "#ff9900" と "#FF9900" は同一です。

 

getBackgrounds》複数セルの背景色を取得する

コピペでOK!複数セルの背景色を取得するGAS

f:id:yukibnb:20200712141653p:plain

複数セルの背景色を取得したい場合、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セルの背景色が二次元配列で格納されます。

ログを確認してみましょう。

 

カラーコードが二次元配列で格納される

f:id:yukibnb:20200712142514p:plain

ログを確認するとこのように表示されます。このままだと見にくいので改行すると以下のようになります。

//変数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セルの背景色と同じ色ですね。
f:id:yukibnb:20200712142815p:plain

 

ヒント

セルに背景色が設定されていない場合、"#ffffff" (白)が格納されます。

 

二次元配列を処理しよう

現在変数bgColorsにはA1~E4セルの背景色が二次元配列で格納されています。

変数bgColorsに対してループなどの処理をすることで、高速で特定のセル・行・列の背景色を取り出したり、変更したりすることができます。

例えば「背景色が"#ff9900"のセルの数をカウントする」というような処理も高速で行うことができます。

二次元配列の取り扱いについては以下記事で図入りでやさしく解説していますので、よければご覧ください。

【超初心者向け】二次元配列をやさしく図入り解説
【初心者向けGAS】一次元配列の要素を追加・削除する方法をやさしく解説
【初心者向けGAS】二次元配列の要素を追加・削除する方法をやさしく解説
【初心者向けGAS】二次元配列のループの処理順序を徹底解説

 

まとめ

今回はGoogle Apps Script(GAS)を使ってスプレッドシートのセルの背景色(塗りつぶしの色)を取得する方法を紹介しました。

ふたつめのgetBackgroundsには様々な活用方法があるため、また別の機会に実践編として紹介します。

是非ご期待ください!