入力チェックは「事故を防ぐ最後の砦」
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で入力チェックを実装する方法を解説しました。
入力チェックは、
システムの品質を支える重要な処理です。
次回は、未確定データを管理する「編集フラグ」について解説します。
0 件のコメント:
コメントを投稿