かもメモ

自分の落ちた落とし穴に何度も落ちる人のメモ帳

Google スプレッドシート セルに特定の値を入力したらその行の背景色をかえたい。

スプレッドシートで情報を管理してて、作業が完了したらセルにチェックを入れる。
その時にパッと見で判るように完了した行にまるっと背景色を付けたい。そんなメモです。

セルに背景色を付けるだけなら、条件式付き書式設定ルールで簡単に行うことができます。

しかし、行をまるっととなると条件式付き書式設定ルールでは実現できそうになかったので、スクリプトを書いて実装します。

  1. メニューのツールから**スクリプトエディタ...**を選択してエディタを開きます。
  2. スクリプトを書きます。
  3. // シートに変更があった時に実行する関数
    function onEditEvent(evt) {
      // 変更のあったシート
      var ss = evt.source.getActiveSheet();
      // 変更のあったセル
      var cell = evt.source.getActiveRange();
      // 変更のあったセルの値
      var val = cell.getValue();
      // 変更のあったセルの列が1番目のA列 かつ 値が 1か-1だった時に
      if( cell.getColumn() == 1 && ( val == 1 || val == -1 ) ) {
        // 変更のあったセルの有る行番号
        var r = cell.getRow();
        // 変更のあったセルの有る行を選択
        var rowRange = ss.getRange(r, 1, 1, 11);
    
        if(val == 1) {
         // 値が 1なら RGB(102, 187, 221) の背景色にする
          rowRange.setBackgroundRGB(102, 187, 221);
        } else {
          //  値が -1なら RGB(200, 200, 200) の背景色にする
          rowRange.setBackgroundRGB(200, 200, 200);
        }
      }
    }
    
  4. エディタのリソースをクリックして、**現在のプロジェクトのトリガー**を選択
  5. 実行をonEditEvent、イベントをスプレッドシートから編集時 にして保存

元のスプレッドシートに戻って、A列に1-1を入力してみて行の背景色がまるっと変更されれば成功です。
スプレッドシートgetColumn()は先頭が多くのプログラムと違って1だったので少しハマりした。


101デザインメソッド ―― 革新的な製品・サービスを生む「アイデアの道具箱」

101デザインメソッド ―― 革新的な製品・サービスを生む「アイデアの道具箱」

はてなのマークダウンでリンクを_blankにする方法ってないのかしら?