スプレッドシートの見落としを色で防ぐ|GASで条件付き書式を安全に追加する方法
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公認の商品ではありません。
