Home » Googleスプレッドシートの使い方 » Googleスプレッドシートで一行ごとに塗りつぶしを行うスクリプト

Googleスプレッドシートで一行ごとに塗りつぶしを行うスクリプト

対象:Googleスプレッドシート・Google Apps Script

「googleスプレッドシート 一行ごとに塗りつぶす」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。

Googleが無料で提供している表計算ソフト・Googleスプレッドシートで、表を見やすくするために、一行ごとに色を変更する方法を探している方による検索です。

一行ごとの塗りつぶしについて

最近のExcelの場合、テーブル機能を使うことで簡単に一行ごとに色を変更することができます。条件付き書式を設定することで一行ごとに塗りつぶし色を変更することもできます。

2014年2月現在のGoogleスプレッドシートの場合、標準機能では一行ごとに塗りつぶしをするといったことはできないようです。条件付き書式機能でも、一行ごとに色を変えることはできないようです。

[スポンサードリンク]

スクリプトで一行ごとに塗りつぶす

ですが、Googleスプレッドシートにも、Excelのマクロと同じようなスクリプト機能(GAS = Google Apps Script)があります。

Googleスプレッドシートではスクリプトを利用することで、一行ごとに色を変更することができます。

function sample_shadeEveryOtherRow(){

 const begin_col = 1; // 塗りつぶし処理を開始する列
 const begin_row = 1; // 塗りつぶし処理を開始する行
 const evn_rgb = '#ffffff'; // 偶数行の色
 const odd_rgb = '#dddddd'; // 奇数行の色

 var bk = SpreadsheetApp.getActiveSpreadsheet();
 var sh = bk.getActiveSheet();

 // 塗りつぶしをする列数の計算
 var col_cnt = sh.getLastColumn() - begin_col + 1

 for(var i = begin_row; i <= sh.getLastRow(); i++){
  if(i % 2 == 0){
   // getRange(行番号, 列番号, 行数, 列数)
   sh.getRange(i, begin_col, 1, col_cnt)
     .setBackgroundColor(evn_rgb);
  } else {
   sh.getRange(i, begin_col, 1, col_cnt)
     .setBackgroundColor(odd_rgb);
  }
 }
}

上記のスクリプトを実行すると、
 定数・begin_colで指定された列から最後の列まで
 定数・begin_rowで指定された行から最後の行まで
 偶数行は定数・evn_rgbで指定された色で
 奇数行は定数odd_rgbで指定された色で
塗りつぶしが行われます。

表が1行目1列目から作成されている場合は、定数・begin_colもbegin_rowも「1」でOKですが、一行ごとに塗りつぶしをしたい表の、上や左に、タイトルが入力されていたり、空白の列が存在していたりすることがあるため、定数で変更できるようにしました。

塗りつぶし色は、HTMLやCSSをいじったことのある方にはお馴染みの方法で指定してください。

塗りつぶしを行っているのは、ループ処理の部分です。

定数・begin_rowで指定された行から最終行までループを回し、
 for(var i = begin_row; i <= sh.getLastRow(); i++){

行番号を「2」で割った余りを調べて「0」ならば
  if(i % 2 == 0){

偶数行なので定数・evn_rgbで指定した色で塗りつぶし
   sh.getRange(i, begin_col, 1, col_cnt)
     .setBackgroundColor(evn_rgb);

そうでなければ奇数行なので定数・odd_rgbで指定した色で塗りつぶしています。
  } else {
   sh.getRange(i, begin_col, 1, col_cnt)
     .setBackgroundColor(odd_rgb);

SheetクラスのgetRange()メソッドは、Rangeオブジェクトを取得するメソッドで、
 第1引数に取得する先頭の行番号(i)
 第2引数に取得する先頭の列番号(begin_col)
 第3引数に取得する行数(1)
 第4引数に取得する列数(col_cnt)
を指定します。

第4引数に指定する列数はループ処理に入る前に計算しています。
 var col_cnt = sh.getLastColumn() - begin_col + 1

[スポンサードリンク]

Home » Googleスプレッドシートの使い方 » Googleスプレッドシートで一行ごとに塗りつぶしを行うスクリプト

「Googleスプレッドシートの使い方」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.