LANG SELRCT

コードを書く場所についてはこちら

2017年11月15日水曜日

特定の文字が入力された行の背景色を変える

列を指定して特定の文字を含むセルの背景色を変えることは、条件書式でわりとすぐにできると思います(念のためおまけ2に方法を書きました)

行の場合もコードを書かずに条件書式だけで実現できるのでその方法を書いてみます

コードで実現する方法は下の方に「コードで実現したい場合」を書きましたので興味があれば試してみてください


条件書式で実現する場合


A列でdoneと入力されたセルがある行の背景色をグレーにする例
  1. 対象の範囲を選択して
  2. 表示形式>条件付き書式...を選択する
  3. セルの書式設定の条件...>カスタム数式を選択する
  4. 値または数式の欄に =$A1="done" を入力する
  5. 書式設定のスタイルを任意で変更する



実際にやってみる


対象の範囲を選択する(例ではシートのすべての範囲を選択)



表示形式>条件付き書式...を選択する


セルの書式設定の条件...>カスタム数式を選択して
値または数式の欄を =$A1="done" に設定する

書式設定のスタイルを任意で変更する


doneの行の背景色が指定した色に変わる


コードで実現したい場合


それをコードで書いてみたものが以下のコード.gsです
(条件書式でのやり方を知らなかった時に使っていました)

onEditを利用して
セルを編集した時に
doneだったら背景色を変更する
ということをやっています



コード.gs
function onEdit() {
    var sh = SpreadsheetApp.getActiveSheet();
    var cell = sh.getActiveCell();
    var row = cell.getRow();
    var col = cell.getColumn();
    if (col == 1 && cell.getValue() == "done") {
        sh.getRange(row + ":" + row).setBackground('lightgray');
    } else {
        sh.getRange(row + ":" + row).setBackground('white');
    }
}
意訳.gs
シートが編集された時に実行する
今開いているシートの
選択しているセルの
行数を取得して
列数を取得して
もし1列目で値がdoneなら
その行の背景色をlightgrayにして
それ以外は
その行の背景色をwhiteにする




おまけ


アクティブセルの背景色を取得する
コード.gs
function get_bgcolor() {
    var bgcolor = SpreadsheetApp.getActiveSheet().getActiveRange().getBackground();
    Browser.msgBox(bgcolor);
}



おまけ2 列に対して条件書式を設定する場合


A列でdoneと入力されたセルの背景色をlight gray1にする例
  1. 対象の範囲を選択して
  2. 表示形式>条件付き書式...を選択する
  3. セルの書式設定の条件...>完全一致するテキスト
  4. 値または数式の欄に done を入力する
  5. 書式設定のスタイルを任意で変更する

実際にやってみる



対象の範囲を選択して
表示形式>条件付き書式...を選択する



セルの書式設定の条件...>完全一致するテキスト
値または数式の欄に done を入力する



書式設定のスタイルを任意で変更するのは本文のこちらにある通り