スプレッドシートの見落としを色で防ぐ|GASで条件付き書式を安全に追加する方法

スプレッドシートの見落としを色で防ぐ|GASで条件付き書式を安全に追加する方法

Gasおじ|GoogleアカウントをAIエージェント化

Gasおじ|GoogleアカウントをAIエージェント化

注文表を毎日見ていても、「未入金」「発送準備中」「期限超過」が文字だけで並んでいると見落としが起きます。

この記事では、元の注文表を直接変更せず、確認用コピーにだけ条件付き書式を追加する最小コードを紹介します。GAS(Google Apps Script)が初めてでも、サンプル3行から試せます。

今回できること

  • 「未入金」のセルを赤くする
  • 「発送準備中」のセルを黄色くする
  • 発送期限を過ぎたセルをオレンジにする
  • 元シートは変更せず、日時付きの確認用シートを作る

色は確認を助ける表示です。入金や発送の事実を自動判定するものではありません。最終確認は元の記録や決済・配送情報と照合してください。

準備する注文表

スプレッドシートに「注文管理」という名前のシートを作り、1行目を次の5列にします。

  • A列: 注文ID
  • B列: 顧客名
  • C列: 支払状況
  • D列: 発送状況
  • E列: 発送期限

動作確認用の例です。

  • ORD-001 / 山田商店 / 未入金 / 未発送 / 2026/08/12
  • ORD-002 / 鈴木企画 / 入金済み / 発送準備中 / 2026/08/11
  • ORD-003 / 佐藤制作 / 入金済み / 発送済み / 2026/08/09

発送期限は文字列ではなく、スプレッドシートの日付として入力してください。

コピーして使える最小コード

function createOrderStatusFormattingPreview() {
  const SOURCE_SHEET = '注文管理';
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const source = ss.getSheetByName(SOURCE_SHEET);

  if (!source) {
    throw new Error('「注文管理」シートが見つかりません。');
  }

  const lastRow = source.getLastRow();
  const lastColumn = source.getLastColumn();

  if (lastRow < 2) {
    throw new Error('確認する注文データがありません。');
  }
  if (lastColumn < 5) {
    throw new Error('A〜E列の5列を準備してください。');
  }

  const timestamp = Utilities.formatDate(
    new Date(),
    ss.getSpreadsheetTimeZone(),
    'yyyyMMdd_HHmmss'
  );
  const previewName = `${SOURCE_SHEET}_書式確認_${timestamp}`.slice(0, 100);

  // 元シートを直接変更せず、確認用コピーを作る
  const preview = source.copyTo(ss).setName(previewName);
  const dataRows = lastRow - 1;

  const unpaidRange = preview.getRange(2, 3, dataRows, 1);
  const shippingRange = preview.getRange(2, 4, dataRows, 1);
  const deadlineRange = preview.getRange(2, 5, dataRows, 1);

  const unpaidRule = SpreadsheetApp.newConditionalFormatRule()
    .whenTextEqualTo('未入金')
    .setBackground('#f4cccc')
    .setRanges([unpaidRange])
    .build();

  const preparingRule = SpreadsheetApp.newConditionalFormatRule()
    .whenTextEqualTo('発送準備中')
    .setBackground('#fff2cc')
    .setRanges([shippingRange])
    .build();

  const overdueRule = SpreadsheetApp.newConditionalFormatRule()
    .whenFormulaSatisfied('=AND($D2<>"発送済み",$E2<>"",$E2<TODAY())')
    .setBackground('#fce5cd')
    .setRanges([deadlineRange])
    .build();

  const currentRules = preview.getConditionalFormatRules();
  preview.setConditionalFormatRules([
    ...currentRules,
    unpaidRule,
    preparingRule,
    overdueRule
  ]);

  SpreadsheetApp.flush();
  console.log(`確認用シートを作成しました: ${previewName}`);
}

実行手順

1. 実データではなく、まずサンプル用スプレッドシートを開きます。

2. 「拡張機能」から「Apps Script」を開きます。

3. コードを貼り付けて保存します。

4. `createOrderStatusFormattingPreview` を選んで実行します。

5. 初回だけ、スプレッドシートを操作する権限を確認します。

6. 「注文管理_書式確認_日時」という新しいシートができたことを確認します。

元の「注文管理」シートには書式を追加しません。結果が想定と違う場合は、確認用シートを残したまま、入力値や列位置を見直せます。

色が付かないときの確認ポイント

支払状況と発送状況の文字をそろえる

このコードは「未入金」「発送準備中」「発送済み」という文字と完全一致したときに動きます。前後の空白や表記ゆれがあると色が付きません。

発送期限を日付として入力する

見た目が日付でも、文字列として保存されていると期限超過を正しく比較できません。セルの表示形式と入力値を確認してください。

シートのタイムゾーンを確認する

`TODAY()`はスプレッドシート側のタイムゾーンを基準にします。日付の境目がずれる場合は、スプレッドシートの設定を確認してください。

既存ルールとの重なりを確認する

元シートに条件付き書式がある場合、そのルールも確認用コピーへ引き継がれます。色が競合したら、確認用シートのルール一覧と適用範囲を確認してください。

実データへ反映する前のチェックリスト

  • [ ] 注文IDに重複がない
  • [ ] 支払状況と発送状況の表記が統一されている
  • [ ] 発送期限が日付形式になっている
  • [ ] サンプル3行で色の付き方を確認した
  • [ ] 色だけで入金・発送済みを確定しない
  • [ ] 個人情報を実行ログへ出していない
  • [ ] Apps Scriptの実行上限と権限を確認した

まとめ

条件付き書式は、注文表の重要な状態を見つけやすくする補助線です。最初から元シートへ自動設定するのではなく、コピーで色・範囲・日付判定を確認してから運用へ移すと、既存の表を崩すリスクを抑えられます。

色分けだけでなく、注文ID・入金・発送・売上集計まで一つのシートで整えたい方向けです。

個人販売の注文・発送管理GAS Proを見る

ほかのGAS商品や実務テンプレートはこちらから確認できます。

GasおじのTips商品一覧を見る

※学習・検証用の例です。実データへ適用する前にコピー環境で確認してください。Google公式・Google公認の商品ではありません。


あなたも記事の投稿・販売を
始めてみませんか?

Tipsなら簡単に記事を販売できます!
登録無料で始められます!

Tipsなら、無料ですぐに記事の販売をはじめることができます Tipsの詳細はこちら
 

この記事のライター

Gasおじ|GoogleアカウントをAIエージェント化

おう、Gasおじだ。 AIツールとSaaSに散々突っ込んで遠回りした結果、最後に強かったのは「今あるGoogleアカウント」だった。 今ではAIエージェントであらゆるタスクを自動化して無双してるぞ。 GAS、スプレッドシート、フォーム、Gmail、AIエージェントを組み合わせれば、個人でも小さな会社でも、手作業だらけの業務はかなり自動化できる。 ここでは机上のAI論じゃなく、現場で動くテンプレ、コード、手順だけを置いていくぞ。 高いツールを増やす前に、まずお前さんのGoogleアカウントを仕事するエージェントに変えようじゃないか。

このライターが書いた他の記事

  • GASのtry-catch入門|元データを守るエラー処理とログの実装例

  • Gmailの定型連絡を「送信せず」まとめて下書き化する|Gmail下書きテンプレGAS Pro

    ¥2,980
    1 %獲得
    (29 円相当)
  • Gasおじ式 X投稿キュー自動実行GAS Pro|危ない時だけ止まる

    ¥2,980
    1 %獲得
    (29 円相当)

関連のおすすめ記事

  • USBメモリで持ち運べるLinux Mint 22.1と永続的な書き込み領域の作成法【Rufus だけで作成する方法を初心者向けに徹底解説】

    ¥500
    1 %獲得
    (5 円相当)
    SmartSenior

    SmartSenior

  •  Let's noteにChromeOS 135を搭載!内蔵メモリ8GBのChromebookを構築 Windows10との共存環境

    ¥500
    1 %獲得
    (5 円相当)
    SmartSenior

    SmartSenior

  • AI時代のX運用 基礎設計マニュアル|1日15分で回すアカウント運用の土台づくり

    ¥980
    1 %獲得
    (9 円相当)
    OfficeBuddy

    OfficeBuddy