GASでスプレッドシート条件付き書式を自動設定

GASスプレッドシート見やすさ向上
GASでスプレッドシート条件付き書式を自動設定のサムネイル

GASでスプレッドシート条件付き書式を自動設定

こんにちは、GASおじです。今回は中小企業の経営者やフリーランスの皆さん向けに、Google Apps Script(以下GAS)を使ってスプレッドシートの条件付き書式を自動で設定する方法をお伝えします。スプレッドシートの見やすさをグッと上げて、日々の業務効率化に役立ててくださいね。


条件付き書式の自動設定で何が変わる?

スプレッドシートって、見た目がゴチャゴチャしていると使いづらいですよね。条件付き書式を上手く使うと、例えば「売上が目標未達なら赤色で強調」「期限切れのタスクは黄色に」など、一目で重要な情報がわかるようになります。

でも、手作業で設定するのは面倒だし、誤って既存データを消したり、書式が崩れるリスクもあります。そこでGASで自動化することで、

  • 既存データはそのまま残しつつ書式だけ追加
  • バッチ処理で効率的に設定
  • もしものためにバックアップも自動で作成

といった安心・安全な運用が可能です。


GASで条件付き書式を設定するポイント

おじさんが気をつけているのは以下の点です。

  1. 既存シートは変更しない
    条件付き書式の設定は新規シートや新規ファイルに書き出す形で行い、元データは絶対に直接上書きしません。

  2. 入力検証を入れる
    範囲指定や条件の妥当性をチェックして、誤動作を防止。

  3. バッチで書き込み
    シート操作はまとめて行い、実行時間を短縮。

  4. バックアップを作成
    処理開始時に日時付きのコピーを作成し、復元も可能に。

  5. Googleアカウントの利用枠内で運用
    追加の専用SaaS料金なし。ただしApps Scriptのquota・実行上限あり。ここは経費削減のポイントです。


具体的なコード例

下記コードは、元データが入った「元データ」シートの内容を複製し、新しい日時付きシートに条件付き書式を設定します。既存データは一切触りません。

function setConditionalFormatting() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sourceSheet = ss.getSheetByName('元データ');
  if (!sourceSheet) {
    throw new Error('元データシートが見つかりません');
  }

  // バックアップシート名作成
  const timestamp = Utilities.formatDate(new Date(), ss.getSpreadsheetTimeZone(), 'yyyyMMdd_HHmmss');
  const backupName = '元データ_backup_' + timestamp;
  
  // バックアップ作成(元データのコピー)
  sourceSheet.copyTo(ss).setName(backupName);

  // 新規シート作成(日時付き)
  const newSheetName = '条件付き書式_' + timestamp;
  const newSheet = ss.insertSheet(newSheetName);
  
  // 元データの値を取得(入力検証)
  const dataRange = sourceSheet.getDataRange();
  const values = dataRange.getValues();
  if(values.length === 0){
    throw new Error('元データシートにデータがありません');
  }

  // 新しいシートに値を一括セット(バッチ書き込み)
  newSheet.getRange(1, 1, values.length, values[0].length).setValues(values);

  // 条件付き書式ルールを作成
  // 例: 2列目(B列)が100未満なら赤背景
  const range = newSheet.getRange(2, 2, values.length - 1, 1); // ヘッダー除く2列目
  const rule = SpreadsheetApp.newConditionalFormatRule()
    .whenNumberLessThan(100)
    .setBackground('#FFCCCC')
    .setRanges([range])
    .build();

  // 既存の条件付き書式取得(もしあれば)
  const rules = newSheet.getConditionalFormatRules();
  rules.push(rule);
  newSheet.setConditionalFormatRules(rules);

  Logger.log('条件付き書式を設定した新シート「' + newSheetName + '」を作成しました。');
}

初期設定と必要権限

このスクリプトを動かすには、Googleスプレッドシートの編集権限が必要です。また、初回実行時にGASから以下の権限を求められます。

  • スプレッドシートの閲覧・編集権限
  • スプレッドシートのコピー・作成権限

これを許可することで、バックアップ作成や条件付き書式の設定が可能になります。


個人情報の取扱いとセキュリティ

スクリプトはGoogleアカウントの利用枠内で動作し、クラウド上で処理されます。個人情報や顧客データを含むスプレッドシートを扱う場合は、アカウントの権限管理に注意してください。
また、外部サービスへのデータ送信は一切していませんので、社内運用でも安心して使えます。


installable triggerと復元手順

この処理は手動実行が基本ですが、定期的に条件付き書式を更新したい場合はinstallable trigger(時間主導型トリガー)を設定しましょう。

  1. スクリプトエディタの「編集」→「現在のプロジェクトのトリガー」から新規作成
  2. 「時間主導型」→「日付ベースのタイマー」や「分ベースのタイマー」を選択し実行頻度を設定

復元手順はバックアップシートから元の名前にリネームするだけ。バックアップは日時付きで残るので、複数回の復元も安心です。


コスト削減効果(仮定)

例えば、手作業で月に2時間かかっていた条件付き書式の設定をGASで自動化し、月1回の更新に削減できたとしましょう。
時間単価を3,000円として、2時間 × 12ヶ月 × 3,000円 = 72,000円/年 の人件費を削減可能。
追加のSaaS料金は不要で、Googleアカウントの利用枠内で動くため、月額費用は増えません。


仕事の効率化は小さな工夫の積み重ねです。GASおじラボではこうした実践的なノウハウを多数提供しています。
興味があればぜひこちらからメンバーシップもチェックしてください。

GASおじラボで500ツール使い放題 →