2012年1月16日月曜日

Googleスプレッドシート(Google Apps Script) 行の背景色を変更する

Googleスプレッドシート。
セルに入力した値によって背景色を変える場合には
条件付き書式という機能を使用すれば良い。

ただし変更できるのはそのセルだけなので、
行の背景色を変更する場合にはスクリプトを使わないといけないみたい。


以下、タスク管理表を作るときに作ってみたソースコード。
「未対応」、「対応中」、「完了」によって、
そのタスクの一行の背景色の色を変えて見やすくした。


------------------------------------------------------------

//「onEdit」はセルの値が変更されるなどの変更あった際に呼び出されるらしい
function onEdit(event) {
  rowColor();
}

function rowColor() {
  var range = SpreadsheetApp.getActiveRange();        //編集のあった(アクティブな)セルを取得
  var col = range.getColumnIndex();        //編集のあったセルの列を取得
  var row = range.getRowIndex();        //編集のあったセルの行を取得
 
  //各行の2列目にタスクの進捗状況を書いていたので、そこに編集があったときだけ
  //背景色が変わるようにした。
  if (col == 2) {
    var backgroundColor = "#FFFFFF";
    var fontColor = "#555555";
   
    if (range.getValue() == "完了") {
      backgroundColor = "#DDFF99";
    }
    else if (range.getValue() == "対応中") {
      backgroundColor = "#88AAFF";
    }
    else if (range.getValue() == "未対応") {
      backgroundColor = "#F5F5F5";
    }
   
    //セルの色を指定していく。10という値は適当。
    for (var i = 1; i <= 10; i++) {
      if (row != 1) {
        sheet.getRange(row, i).setBackgroundColor(backgroundColor);
        sheet.getRange(row, i).setFontColor(fontColor);
      }
    }
  }
}

------------------------------------------------------------

もっとスマートに書けそうだけど、
これで動いている。
参考にしたサイトは、何かエラーが出て動かないのもあった。

0 件のコメント:

コメントを投稿