2026年7月30日木曜日

GASで入力チェックを実装する方法|バリデーション・エラー制御

入力チェックは「事故を防ぐ最後の砦」

GASでスプレッドシートを自動化する際、 最も重要なのが入力チェック(バリデーション)です。

どれだけ処理を正しく書いても、 入力データが想定外であれば結果は壊れます。

特に実務では、次のような問題が頻発します。

  • 空欄のまま処理される
  • 数値のはずが文字列になっている
  • 日付形式がバラバラ

この記事では、GASで入力チェックを実装する方法として、 基本パターンから実務設計まで整理します。

目次

入力チェックの考え方

入力チェックは、単に「エラーを出す」だけではありません。

重要なのは、次の3点です。

  • 不正データを処理させない
  • どこが問題か分かるようにする
  • 後続処理を安全にする

この3つを満たす設計が、実務で求められます。

空欄チェックの基本

最も基本となるのが空欄チェックです。


if (value === '' || value === null) {
  throw new Error('値が未入力です');
}

単純ですが、これを入れるだけで 多くの事故を防げます。

型チェック(数値・日付)

次に、データの型をチェックします。

数値チェック


if (isNaN(value)) {
  throw new Error('数値ではありません');
}

日付チェック


if (!(value instanceof Date)) {
  throw new Error('日付形式ではありません');
}

型チェックを行うことで、 後続処理の安全性が大きく向上します。

条件チェック(範囲・ルール)

実務では、値の範囲やルールもチェックします。


if (value < 0 || value > 100) {
  throw new Error('範囲外の値です');
}

このように業務ルールをコードに落とし込むことで、 入力ミスを防止できます。

Range一括でバリデーションする

GAS012で学んだように、 バリデーションも一括処理するのが基本です。


const values = sheet.getRange(1, 1, 100, 1).getValues();

for (let i = 0; i < values.length; i++) {
  const value = values[i][0];

  if (value === '') {
    throw new Error('未入力行あり:' + (i + 1));
  }
}

この方法で、 高速かつ網羅的なチェックが可能になります。

try-catchでエラー制御する

チェックでエラーが出た場合、 try-catchで制御するのが基本です。


try {
  validateData(values);
} catch (e) {
  Logger.log(e.message);
  return;
}

これにより、 異常時に処理を止めつつログを残せます。

実務での設計パターン

実務では、チェック処理を関数として分離します。


function validateData(values) {
  for (let i = 0; i < values.length; i++) {
    if (values[i][0] === '') {
      throw new Error('未入力行あり:' + (i + 1));
    }
  }
}

このように分離することで、 再利用性と可読性が向上します。

まとめ

この記事では、GASで入力チェックを実装する方法を解説しました。

入力チェックは、 システムの品質を支える重要な処理です。

次回は、未確定データを管理する「編集フラグ」について解説します。

GAS 入力チェック バリデーション 解説イメージ

0 件のコメント:

コメントを投稿