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入門」の記事

第32回.グラフ
第33回.表示の固定
第34回.シート保護
第35回.スプレッドシートが非常に遅い、高速化するには
第36回.フォルダとファイルを扱う(DriveApp)
第37回.フォルダの一覧取得・作成・削除(Folder)
第38回.ファイルの一覧取得・削除(File)

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

ScreenUpdating=False時にエラー停止後にシートが固まったら|ExcelマクロVBA技術解説(11月21日)
データクレンジングと名寄せ|ExcelマクロVBA技術解説(10月20日)
SUMIFの間違いによるパフォーマンスの低下について|エクセル関数超技(6月17日)
条件式のいろいろな書き方:TrueとFalseの判定とは|ExcelマクロVBA技術解説(6月15日)
空白セルを正しく判定する方法2|ExcelマクロVBA技術解説(5月6日)
フルパスをディレクトリ、ファイル名、拡張子に分ける|ExcelマクロVBA技術解説(4月15日)
テキストボックスの各種イベント|Excelユーザーフォーム入門(4月9日)
フォルダ(サブフォルダも全て)削除する、Optionでファイルのみ削除|ExcelマクロVBAサンプル集(4月4日)
最後の空白(や指定文字)以降の文字を取り出す|エクセル関数超技(3月26日)
先頭の数値、最後の数値を取り出す|エクセル関数超技(3月26日)

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

1.最終行の取得(End,Rows.Count)|ExcelマクロVBA入門
2.RangeとCellsの使い方|ExcelマクロVBA入門
3.変数とデータ型(Dim)|ExcelマクロVBA入門
4.Range以外の指定方法(Cells,Rows,Columns)|ExcelマクロVBA入門
5.セルのコピー&値の貼り付け(PasteSpecial)|ExcelマクロVBA入門
6.定数と型宣言文字(Const)|ExcelマクロVBA入門
7.マクロって何?VBAって何?|ExcelマクロVBA入門
8.CSVの読み込み方法|ExcelマクロVBAサンプル集
9.徹底解説(VLOOKUP,MATCH,INDEX,OFFSET)|エクセル関数超技
10.ひらがな⇔カタカナの変換|エクセル基本操作




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


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

↑ PAGE TOP