MENU

GASでスプレッドシートの入力ミスを検知する方法

当ページのリンクには広告(PR)が含まれていることがあります。
GASでスプレッドシートの入力ミスを検知する方法のアイキャッチ

入力ミスを見つける処理は、間違った値を自動で直す前に、どの行の何が条件と違うかを示すところから作ります。空欄を0へ直したり、知らない状態名を「未処理」へ置き換えたりすると、入力した人の意図を消す場合があります。

例では受付ID、数量、状態の3列を点検します。数量は0以上の整数、状態は「未処理・対応中・完了」に限定する設計です。これは練習用の条件で、すべての業務に同じ規則を当てはめるものではありません。

目次

正常とする値を決める

先に、必須項目、許可する値、重複の扱いを表にします。受付IDの先頭ゼロを残す、数量0は受け付ける、空欄は不足として止める、という違いを明記します。

スクロールできます
項目 この例の条件 不備がある場合
受付ID 空欄不可、同じ表で重複不可 入力元を確認
数量 0以上の整数 単位や未入力を確認
状態 未処理・対応中・完了 表記と運用ルールを確認

数量が文字の「3」でもよいかは、読み取り方法と入力のルールで変わります。この例はgetValuesで取得した数値を想定し、文字列は自動変換せず不備にします。文字列の数値を受け付けたいなら、その変換規則を別に用意します。

配列を検査する関数

GoogleのRangeリファレンスでは、getValuesが二次元配列を返し、空のセルは空文字列になると説明されています。次の関数は見出しを除いた配列を点検する例です。GASから実際の表を読んだり、値を更新したりはしていません。

function inspectInputRows(rows) {
  const errors = [];
  const seen = new Set();
  const states = ['未処理', '対応中', '完了'];
  rows.forEach(function (row, index) {
    const line = index + 2;
    const id = String(row[0] === undefined ? '' : row[0]).trim();
    if (!id || seen.has(id)) errors.push([line, '受付ID', '空欄か重複']);
    if (id) seen.add(id);
    if (!Number.isSafeInteger(row[1]) || row[1] < 0) {
      errors.push([line, '数量', '0以上の整数ではない']);
    }
    if (!states.includes(row[2])) {
      errors.push([line, '状態', '許可した値ではない']);
    }
  });
  return errors;
}

行番号は、元のシートで1行目が見出しという想定です。違う位置から読み取るなら、その開始行に合わせて番号を直します。エラー一覧に元の値も残す場合は、個人情報などを別の共有先へ複製しないかを確認してください。

正常例と異常例の照合

「A001・0・未処理」は正常例です。「A001が2行ある」「数量が空欄」「状態が対応済み」のような例も用意し、想定した項目だけが報告されるかを見ます。0を空欄と同じものとして扱わないことも確認します。

検査結果が0件でも、業務上の内容まで正しいとは限りません。数量の桁を1つ間違えても、0以上の整数という条件には合います。注文書と照合する必要がある値は、入力形式の検査とは分けます。

シートへ組み込むタイミング

最初は手動で全体を点検し、確認表へ結果を出す運用にします。入力規則で値を絞る方法と、処理の直前に配列を検査する方法を組み合わせると、どこで不備を防ぐかが分かります。

編集をきっかけに検査する場合は、シンプルトリガーの制限を確認してください。スクリプトによるセル更新など、手入力と同じようには発火しない操作があります。外部から取り込んだデータも検査したいなら、取り込み処理の直後にも確認を置きます。

不備がある行を通知や集計へ流すか、全体を止めるかは業務で決めます。誤りを見つける処理と、値を書き換える処理を分ければ、入力者へ確認してから修正できます。

欠損や型の点検は取得データの欠損検知、GASの値の読み取りはGAS入門も参考になります。

この記事を書いた人

Watanabeのアバター Watanabe サイト運営者

2020年よりブログ開始。
SEOが思いのほか性にあっていたようで現在に至る。
モットーは「勝率の高い選択をする」
AIは活用するが吉、最後は人間が息を吹き込む。
アートと科学を追求し、日々精進。
―――
収益:6~7桁をウゴウゴ。
サイト:ペラサイト~中規模サイトまで運営中。
案件:1000円以上の案件をメインに取組中。
打ち手:ブラックSEO~ホワイトSEOまで
―――

目次