GASで指定したセルの入力に応じて、行の背景色を変える

Google apps script を使って、指定したセルに入力があった場合に、その行をグレーアウトしたいという内容です。

たとえば、会費シートの、E4の列に”休部”と入力されていたらA4~E4をグレーアウトしたいということです。

また、E4の列の休部の入力を削除した場合には、グレーアウトをもとに戻します。

以下、スクリプトです

function grayOutRows() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName("会費"); // 適用するシート名
  var range = sheet.getRange("A2:E23"); // 適用する範囲
  var values = range.getValues();
  
  for (var i = 0; i < values.length; i++) {
    if (values[i][4] == "休部") {
      sheet.getRange(i + 2, 1, 1, 5).setBackground("gray");
    } else {
      sheet.getRange(i + 2, 1, 1, 5).setBackground(null);
    }
  }
}

これをトリガーとして作成し、イベントの種類を「変更時」とすることで、うまく適用できました。

ほとんどChatGPTがいい感じに出してくれました。(最初にonEditが出てきたのですが、そちらはうまくいかなかったので、トリガーでだしてもらいました)
以下、ChatGPTさん

理解しました。Google Apps Scriptには、トリガーとしてスクリプトを定期的に実行する機能があります。そのため、トリガーで実行するようにスクリプトを変更することができます。

以下は、トリガーで実行するためにスクリプトを修正する例です。

function grayOutRows() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName("シート1"); // シート名を変更してください
  var range = sheet.getRange("A2:E23");
  var values = range.getValues();

  for (var i = 0; i < values.length; i++) {
    if (values[i][4] == "休部") {
      sheet.getRange(i + 2, 1, 1, 5).setBackground("gray");
    }
  }
}

このスクリプトは、指定された範囲(A2からE23まで)の値を取得し、E列が「休部」である場合に行の背景色を灰色に変更します。トリガーを設定して定期的に実行されるようにする場合は、以下の手順を実行してください。

  1. スクリプトエディタを開きます。
  2. 「編集」→「現在のプロジェクトのトリガー」を選択します。
  3. 「新しいトリガーを作成」をクリックします。
  4. 「イベントのソースを選択」で「時間主導型」を選択します。
  5. 「時間ベースのトリガーを選択」で、実行する間隔を指定します。
  6. 「実行する関数を選択」で、実行する関数名(grayOutRows)を選択します。
  7. 「保存」をクリックしてトリガーを設定します。

これで、トリガーが実行され、指定された範囲内で「休部」と入力されている行の背景色が定期的に灰色に変更されるようになります。

study,tips,works

Posted by イチル