GASでスプレッドシートの背景色を自在に操る完全ガイド

GASでスプレッドシートの背景色を変える方法が知りたいんだけど、どうにも難しくて…。
猫男
猫男
catman
catman
安心するんだ。catmanがGASを使ってスプレッドシートの背景色を自在に操る方法を教えるさ。

 

GASでスプレッドシートの背景色を変更する基本

GASでスプレッドシートの背景色を変えるには、SpreadsheetAppRangeを使います。

最初に、スプレッドシートを取得する必要があります。


function setBackgroundColor() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  sheet.getRange('A1').setBackground('yellow');
}

このスクリプトを実行すると、アクティブなシートのA1セルの背景色が黄色に変わります。

SpreadsheetApp.getActiveSpreadsheet()はスプレッドシートを取得し、getActiveSheet()で現在のシートを選びます。

GASで特定の範囲の背景色を変える

スプレッドシートの特定の範囲に背景色を設定したい場合は、次の方法を使います。


function setRangeBackgroundColor() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var range = sheet.getRange('B2:C3');
  range.setBackground('pink');
}

sheet.getRange(‘B2:C3’)で指定された範囲の背景色をピンクに設定します。

背景色を条件付きで変える

たとえば、セルの値によって背景色を変えることもできます。


function setConditionalColor() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var range = sheet.getRange('A1:C3');
  var values = range.getValues();

  for (var i = 0; i < values.length; i++) {
    for (var j = 0; j < values[i].length; j++) {
      if (values[i][j] > 10) {
        range.getCell(i+1, j+1).setBackground('green');
      } else {
        range.getCell(i+1, j+1).setBackground('red');
      }
    }
  }
}

このスクリプトは、指定された範囲内のセルの値が10より大きい場合に緑色、それ以外の場合は赤色に背景を変えます。

 

背景色をリセットする方法

一度設定した背景色をリセットする方法も知っておくと便利です。


function resetBackgroundColor() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  sheet.getRange('A1:C3').setBackground(null);
}

setBackground(null)を使うことで、指定範囲の背景色をデフォルト状態に戻せます。

 

GAS実践練習問題

以下の条件に基づいてGASスクリプトを書いてください。

  1. スプレッドシートの’A1:F10’のセルを対象にする。
  2. セルの値が5以下の場合は背景色を青にする。
  3. セルの値が6以上の場合は背景色をオレンジにする。

  

練習問題の解答・解説


function practiceBackgroundColor() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var range = sheet.getRange('A1:F10');
  var values = range.getValues();

  for (var i = 0; i < values.length; i++) {
    for (var j = 0; j < values[i].length; j++) {
      if (values[i][j] <= 5) {
        range.getCell(i+1, j+1).setBackground('blue');
      } else {
        range.getCell(i+1, j+1).setBackground('orange');
      }
    }
  }
}

このスクリプトは’A1:F10’範囲の各セルを調べ、条件に応じて背景色を設定します。getValues()でセルの現在の値を取得し、ループで各セルを評価してsetBackground()メソッドで色を設定しています。

背景色を変えるスクリプト、簡単そうに見えて奥が深いね!
猫男
猫男
catman
catman
そうだろう。これでスプレッドシートのカスタマイズがもっと楽しくなるはずさ!