1. ホーム
  2. /
  3. [GAS]
  4. /
  5. GASで入力規則をマスター!getDataValidation()徹底活用術【入門から応用まで】

GASで入力規則をマスター!getDataValidation()徹底活用術【入門から応用まで】

GASで入力規則をマスター!getDataValidation()徹底活用術【入門から応用まで】

スプレッドシートでのデータ入力時、「入力ミスが多くて困る」「決められたフォーマットで入力してほしい」といった課題はありませんか? Google Apps Script (GAS) の getDataValidation() メソッドを使えば、こうした悩みを解決し、データ品質を飛躍的に向上させることができます。

このメソッドは、セルに設定された入力規則をスクリプトで取得・操作するための強力なツールです。

この記事では、getDataValidation() の基本的な使い方から、実務で役立つ応用テクニックまで、具体的なサンプルコードを交えながら徹底的に解説します。GAS初心者の方でも理解できるよう、丁寧に説明していくのでご安心ください。

Google Apps Script 始め方 スプレッドシート 活用例
Google Apps Script 始め方 スプレッドシート 活用例 を各ショップで検索

getDataValidation()メソッドの基本:まずはここから!

まずは、getDataValidation() メソッドの基本的な使い方をマスターしましょう。特定のセルの入力規則を取得する方法と、範囲内の複数セルの規則をまとめて取得する方法について解説します。

1. 単一セルの入力規則を取得する

getDataValidation() は、指定したセルに設定されている入力規則(DataValidation オブジェクト)を取得するメソッドです。もしセルに入力規則がなければ、null を返します。

▼ サンプルコード 以下のコードは、アクティブなシートのセル B5 から入力規則を取得し、その「種類」と「ヘルプテキスト」をログに出力する例です。

function checkSingleCellValidation() {
  // B5セルを取得
  const cell = SpreadsheetApp.getActive().getRange('B5');
  // 入力規則を取得
  const validation = cell.getDataValidation();
  
  if (validation !== null) {
    // 規則が存在する場合の処理
    console.log('入力規則のタイプ:', validation.getCriteriaType());
    console.log('ヘルプテキスト:', validation.getHelpText());
  } else {
    // 規則が存在しない場合の処理
    console.log('このセルには入力規則が設定されていません。');
  }
}

2. 複数セルの入力規則をまとめて取得する (getDataValidations)

複数のセルの入力規則を一つずつ処理するのは非効率です。getDataValidations() メソッドを使えば、指定した範囲(レンジ)全体の入力規則を二次元配列として一括で取得できます。

▼ サンプルコード ‘サンプル’という名前のシートの A1:D10 の範囲にあるすべての入力規則を取得し、ログに出力します。

function processRangeValidations() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('サンプル');
  const range = sheet.getRange('A1:D10');
  const validations = range.getDataValidations();

  // 取得した二次元配列をループ処理
  validations.forEach((row, rowIndex) => {
    row.forEach((validation, colIndex) => {
      if (validation !== null) {
        // セルのアドレスを「A1形式」で取得
        const cellAddress = range.getCell(rowIndex + 1, colIndex + 1).getA1Notation();
        console.log(`セル ${cellAddress} の入力規則タイプ:`, validation.getCriteriaType());
      }
    });
  });
}

実践!入力規則を活用したデータ管理テクニック

基本を理解したところで、次に応用的な使い方を見ていきましょう。入力規則を動的に扱うことで、より高度なデータ管理が実現できます。

1. 入力規則の「条件」に応じて処理を分岐させる

getCriteriaType() を使って取得した入力規則の種類に応じて、処理を分岐させることができます。これにより、「数値が特定の範囲内か」「チェックボックスか」といった条件別に異なるアクションを実行できます。

▼ サンプルコード セル C3 の入力規則を調べ、その種類に応じたメッセージをログに出力します。

function validateInputCriteria() {
  const cell = SpreadsheetApp.getActive().getRange('C3');
  const validation = cell.getDataValidation();

  if (validation) {
    switch(validation.getCriteriaType()) {
      // 数値が「〜の間」の場合
      case SpreadsheetApp.DataValidationCriteria.NUMBER_BETWEEN:
        const [min, max] = validation.getCriteriaValues();
        console.log(`数値範囲が設定されています: ${min} から ${max} まで`);
        break;
      // チェックボックスの場合
      case SpreadsheetApp.DataValidationCriteria.CHECKBOX:
        console.log('チェックボックス形式の入力規則です。');
        break;
      // それ以外の場合
      default:
        console.log('その他の入力規則が設定されています。');
    }
  }
}

2. 動的な入力値バリデーションシステムを構築する

入力規則を使い、ユーザーが入力した値がルールに準拠しているかをリアルタイムでチェックする「バリデーションエンジン」を作成できます。入力ミスを即座に検知し、ユーザーに通知する仕組みを構築しましょう。

▼ サンプルコード セル E5 の値が、設定された入力規則を満たしているかチェックし、違反している場合はアラートを表示します。

function dynamicValidationEngine() {
  const cell = SpreadsheetApp.getActive().getRange('E5');
  const validation = cell.getDataValidation();
  
  if (!validation) return; // 規則がなければ終了

  const currentValue = cell.getValue();
  const criteria = validation.getCriteriaType();
  const params = validation.getCriteriaValues();

  let isValid = false;
  // 規則のタイプに応じて検証ロジックを分岐
  switch(criteria) {
    case SpreadsheetApp.DataValidationCriteria.NUMBER_NOT_EQUAL:
      isValid = currentValue !== params[0];
      break;
    case SpreadsheetApp.DataValidationCriteria.TEXT_CONTAINS:
      isValid = String(currentValue).includes(params[0]);
      break;
    case SpreadsheetApp.DataValidationCriteria.DATE_AFTER:
      isValid = new Date(currentValue) > new Date(params[0]);
      break;
  }

  // 検証結果が不正な場合
  if (!isValid) {
    SpreadsheetApp.getUi().alert('入力値が設定された入力規則に違反しています。');
  }
}

【応用編】getDataValidation()で業務を自動化する設計例

getDataValidation() のポテンシャルはこれだけではありません。さらに高度な自動化システムの設計例を2つ紹介します。

1. チェックボックスの状態管理システム

スプレッドシート上の大量のチェックボックスの状態を一元管理するシステムです。例えば、タスク管理シートで「完了」チェックボックスがオンになったら、関連する他のセルの入力規則を「編集不可」に動的に変更する、といった連携処理が可能です。

2. 入力規則を設計図にした動的なフォーム生成

スプレッドシートを「フォームの設計図」として利用し、Googleフォームを自動生成するシステムです。「リストから選択」の入力規則を読み取り、対応するフォームのプルダウン項目を自動で作成することができます。フォームの項目が頻繁に変わる場合に非常に便利です。

まとめ

getDataValidation() は、スプレッドシートの入力規則をGASで柔軟に操作するための重要なメソッドです。このメソッドを使いこなせば、以下のようなメリットがあります。

  • データ品質の向上: 入力ミスやフォーマットの揺れを防ぐ
  • 業務プロセスの自動化: 手作業によるチェックや修正作業を削減
  • 高度なシステムの構築: 動的なデータ管理や他サービスとの連携

本記事で紹介した基本から応用までのテクニックを参考に、あなたのスプレッドシート業務をさらに効率化・自動化してみてください。

Google Apps Script 始め方 スプレッドシート 活用例
Google Apps Script 始め方 スプレッドシート 活用例 を各ショップで検索
Class Range | Apps Script | Google for Developers

Google Apps Scriptを用いたスプレッドシート入力規則の設定を行う - Qiita

はじめに 大勢が共有して利用するシートにおいて、人的ミスは避けられない。(※繰り返し) 以前に投稿した『Google Apps Scriptを用いたスプレッドシート保護の設定を行う』では、編集可能な人を制限することでシートの不用意な改変の防止を試みた。 本稿では、指定範囲...

関連記事

GAS getDataValidations()で入力規則を一括操作!業務自動化テクニック

GAS getDataValidations()で入力規則を一括操作!業務自動化テクニック

スプレッドシートで多数のセルに入力規則を設定していると、「一部のルールだけ一括で変更したい」「設定をバックアップしておきたい」といったニーズが出てきます。しかし、これらを手作業で行うのは非常に面倒で、ミスも起こりがちです。

そんな課題を解決するのが、Google Apps Script (GAS) の getDataValidations() メソッドです。

このメソッドを使えば、指定した範囲の入力規則をまとめて取得し、プログラムで効率的に操作できます。この記事では、getDataValidations() の基本から、設定の一括更新やバックアップといった実践的な自動化テクニックまで、詳しく解説します。

GASでフィルターを自動操作!getFilter()でデータ絞り込みを効率化する方法

GASでフィルターを自動操作!getFilter()でデータ絞り込みを効率化する方法

スプレッドシートで大量のデータを扱う際、「特定の条件で絞り込んで表示する」フィルター機能は欠かせません。しかし、毎日同じ条件でフィルターをかけ直したり、データが追加されるたびに範囲を再設定したりするのは、地味に面倒な作業です。

Google Apps Script (GAS) の getFilter() メソッドを使えば、こうしたフィルター操作を完全に自動化できます。

この記事では、getFilter() の基本から、既存フィルターの更新や、スクリプト実行時に特定の条件で自動的にデータを絞り込む応用テクニックまで、分かりやすく解説します。