Google Apps Script入門
第31回.入力規則

Google Apps Script(GAS)の入門解説です
最終更新日:2016-12-13

第31回.入力規則

Google Apps Script で、スプレッドシートに入力規則を設定します、


入力規則は機能がとても多く、それにメ対応したソッドも多数あります。

ここでは、メソッドの一覧と、代表的な使い方を参考スクリプトを掲載します。



入力規則の作成方法の概要

クラスSpreadsheetAppのメソッドnewDataValidationで入力規則のビルダDataValidationBuilderを作成します。
DataValidationBuilderの各種メソッドを使い、各種の入力規則を作成しておきます。
クラスRangeの、メソッドsetDataValidationで作成済のルールをそのセルに適用します。
入力規則は上書きされないので、setDataValidationに先立って、メソッドclearDataValidationsで入力規則を消去しておくようにします。


newDataValidationのメソッド

方法 簡単な説明
build() ビルダーに適用された設定から、データ検証ルールを構築します。
copy() このルールの設定に基づいて、データ検証ルールのためのビルダーを作成します。
getAllowInvalid() 返しtrueルールが入力データの検証に失敗したときに警告が表示されている場合、またはfalseそれが完全に入力を拒否した場合。
getCriteriaType() で定義されているルールの基準タイプを取得DataValidationCriteria列挙。
getCriteriaValues() ルールの基準の引数の配列を取得します。
getHelpText() ルールのヘルプテキストを取得、またはnull全くヘルプテキストが設定されていない場合。
requireDate() 日付を必要とするデータ検証ルールを設定します。
requireDateAfter(date) 指定された値の後の日付を必要とするデータ検証ルールを設定します。
requireDateBefore(date) 指定された値の前の日付を必要とするデータ検証ルールを設定します。
requireDateBetween(start,end) 値そのものを含めて指定した値の間の日付を、必要とするデータ検証ルールを設定します。
requireDateEqualTo(date) 指定された値に等しい日付を必要とするデータ検証ルールを設定します。
requireDateNotBetween(start,end) 値そのものを含めない与えられた値の間の日付を、必要とするデータ検証ルールを設定します。
requireDateOnOrAfter(date) 上または指定された値の後の日付を必要とするデータ検証ルールを設定します。
requireDateOnOrBefore(date) 上または指定された値の前の日付を必要とするデータ検証ルールを設定します。
requireFormulaSatisfied(formula) 与えられた式は、と評価されていることを必要とするデータ検証ルールを設定しますtrue。
requireNumberBetween(start,end) 値そのものを含めて与えられた値の間の数を、必要とするデータ検証ルールを設定します。
requireNumberEqualTo(number) 指定された値に等しい数を必要とするデータ検証ルールを設定します。
requireNumberGreaterThan(number) 指定された値よりも大きい数を必要とするデータ検証ルールを設定します。
requireNumberGreaterThanOrEqualTo(number) 指定された値以上の数を必要とするデータ検証ルールを設定します。
requireNumberLessThan(number) 指定された値よりも少ない数を必要とするデータ検証ルールを設定します。
requireNumberLessThanOrEqualTo(number) 指定された値以下の数値を必要とするデータ検証ルールを設定します。
requireNumberNotBetween(start,end) 値そのものを含めない与えられた値の間の数を、必要とするデータ検証ルールを設定します。
requireNumberNotEqualTo(number) 指定された値と等しくない数を必要とするデータ検証ルールを設定します。
requireTextContains(text) 入力が与えられた値が含まれていることを必要とするデータ検証ルールを設定します。
requireTextDoesNotContain(text) 入力が与えられた値が含まれていないことを必要とするデータ検証ルールを設定します。
requireTextEqualTo(text) 入力が与えられた値に等しいことを必要とするデータ検証ルールを設定します。
requireTextIsEmail() 入力は、電子メールアドレスの形式であることを必要とするデータ検証ルールを設定します。
requireTextIsUrl() 入力はURLの形式であることを必要とするデータ検証ルールを設定します。
requireValueInList(values) 入力が与えられた値の1に等しいことを必要とするデータ検証ルールを設定します。
requireValueInList(values,showDropdown) 入力は、ドロップダウンメニューを非表示にするオプションを使用して、与えられた値の1に等しいことを必要とするデータ検証ルールを設定します。
requireValueInRange(range) 入力が与えられた範囲内の値に等しいことを必要とするデータ検証ルールを設定します。
requireValueInRange(range,showDropdown) 入力は、ドロップダウンメニューを非表示にするオプションを使用して、与えられた範囲内の値に等しいことを必要とするデータ検証ルールを設定します。
setAllowInvalid(allowInvalidData) 入力データの検証に失敗した場合、または完全に入力を拒否するか、警告を表示するかどうかを設定します。
setHelpText(helpText) ユーザーがデータ検証が設定されているセルの上に置いたときに示すヘルプテキストを設定します。
withCriteria(criteria,args) 定義された基準要求するデータ検証ルールを設定しますDataValidationCriteria列挙型を。

翻訳したものなので、若干日本語がおかしい点があると思います。
太字は、この下のサンプルがあるメソッドになります。


数値の1〜12のみ入力

function mySample31_1() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var rule = SpreadsheetApp.newDataValidation();
  rule.requireNumberBetween(1, 12);
  rule.setAllowInvalid(false);
  sheet.getRange(2, 1).clearDataValidations();
  sheet.getRange(2, 1).setDataValidation(rule);
}
var rule = SpreadsheetApp.newDataValidation()
これで、入力規則のビルダDataValidationBuilderを作成します。

rule.requireNumberBetween(1, 12)
1〜12の数値の入力規則を作成

rule.setAllowInvalid(false)
無効な入力データの場合に、入力を拒否にしています。
規定値はtrueですので、ここでfalseを設定しない場合は、警告が表示されるだけになります。

sheet.getRange(2, 1).clearDataValidations()
入力規則を消去しています。

sheet.getRange(2, 1).setDataValidation(rule)
A2セルに、作成済の入力規則のルールをセルにせていしています。


ドロップダウンリストの入力規則(定数リストを使用)

function mySample31_2() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var rule = SpreadsheetApp.newDataValidation();
  rule.requireValueInList(["A","B","O","AB"], true);
  sheet.getRange(2, 2).clearDataValidations();
  sheet.getRange(2, 2).setDataValidation(rule);
}
requireValueInList(values, showDropdown)
values
リストの値を配列で指定します。

showDropdown
ドロップダウンを表示する場合はTrue、表示しない場合はfalse
省略形として、
showDropdown(values)
この場合は、ドロップダウンが表示されますので、上記のサンプルの場合は省略しても同じになります。
var rule = SpreadsheetApp.newDataValidation()
これで、入力規則のビルダDataValidationBuilderを作成します。

rule.requireValueInList(["A","B","O","AB"], true)
これで、A,B,O,ABのリストを作成し、ドロップダウンの表示を指定しています。

sheet.getRange(2, 2).clearDataValidations()
入力規則を消去しています。

sheet.getRange(2, 2).setDataValidation(rule)
B2セルに、作成済の入力規則のルールをセルにせていしています。


ドロップダウンリストの入力規則(セル範囲をリストとして使用)

function mySample31_3() {
var sheet = SpreadsheetApp.getActiveSheet();
var rule = SpreadsheetApp.newDataValidation();
rule.requireValueInRange(sheet.getRange(1, 6, 7, 1));
sheet.getRange(2, 3).clearDataValidations();
sheet.getRange(2, 3).setDataValidation(rule);
}
requireValueInRange(range, showDropdown)
range
リストとして使うセル範囲を指定します。

showDropdown
ドロップダウンを表示する場合はTrue、表示しない場合はfalse
省略した場合は、trueを指定した場合と同じにドロップダウンが表示されます。
var rule = SpreadsheetApp.newDataValidation()
これで、入力規則のビルダDataValidationBuilderを作成します。

rule.requireValueInRange(sheet.getRange(1, 6, 7, 1))
これで、F1〜F7セルの範囲をリストとして設定しています。
showDropdownを省略していますので、ドロップダウンが表示されます。

sheet.getRange(2, 3).clearDataValidations()
入力規則を消去しています。

sheet.getRange(2, 3).setDataValidation(rule)
C2セルに、作成済の入力規則のルールをセルにせていしています。


入力規則は、データ入力の際の間違い防止に効果的です。
入力後にチェックをするより、入力時に制限を設けておいた方が良いことは当然です。
また、規則を設定することで、入力時の表記ゆれ(入力値の僅かな違い)の防止には非常に効果的です。


まずは、シートに事前に設定しておく事になりますが、
自動拡張(データの増減に対応)させるようにするには、スクリプトで対応する必要も出てきます。
入力規則は、是非活用したい機能ですので、しっかり覚えておきましょう。




同じテーマ「Google Apps Script入門」の記事

リンクの挿入・編集・削除
メモの挿入・削除と改行文字
並べ替え
入力規則
グラフ
表示の固定
シート保護
スプレッドシートが非常に遅い、高速化するには
フォルダとファイルを扱う(DriveApp)
フォルダの一覧取得・作成・削除(Folder)
ファイルの一覧取得・削除(File)

新着記事NEW ・・・新着記事一覧を見る

Excelワークシート関数一覧(2010以降)|VBAリファレンス(4月22日)
クラスとCallByNameとポリモーフィズム(多態性)|VBA技術解説(4月6日)
VBAでのタイマー処理(SetTimer,OnTime)|VBA技術解説(4月3日)
クラスとイベントとマルチプロセス並列処理|VBA技術解説(4月2日)
エクセルの日付と時刻のまとめ|エクセル関数超技(3月6日)
Excelシートの複雑な計算式を解析するVBA|VBAサンプル集(2月18日)
VBAクラスの作り方:独自Rangeっぽいものを作ってみた|VBA技術解説(2月16日)
VBAクラスの作り方:列名のプロパティを自動作成する|VBA技術解説(2月14日)
VBAクラスの作り方:列名の入力支援と列移動対応|VBA技術解説(2月11日)
クラスを使って他ブックのイベントを補足する|VBA技術解説(2月6日)

アクセスランキング ・・・ ランキング一覧を見る

1.ひらがな⇔カタカナの変換|エクセル基本操作
2.最終行の取得(End,Rows.Count)|VBA入門
3.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
4.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
5.RangeとCellsの使い方|ExcelマクロVBA入門
6.変数とデータ型(Dim)|ExcelマクロVBA入門
7.マクロって何?VBAって何?|ExcelマクロVBA入門
8.繰り返し処理(For Next)|ExcelマクロVBA入門
9.とにかく書いて見よう(Sub,End Sub)|VBA入門
10.セルに文字を入れるとは(Range,Value)|VBA入門



  • >
  • >
  • >
  • 入力規則

    このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


    記述には細心の注意をしたつもりですが、
    間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
    なお、掲載のVBAコードは自己責任で使ってください。万一データ破損等の損害が発生しても責任は負いません。






    このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。

    本文下部へ