Kintoneを利用した業務アプリでは、データ入力の際にヒューマンエラーによるミスを防ぐことが重要です。Kintoneには標準のバリデーション機能がありますが、さらに柔軟に対応したい場合は、JavaScriptを使用したカスタムバリデーションを追加することができます。この記事では、Kintoneアプリにカスタムバリデーション機能を実装する具体的な方法を解説します。

1. バリデーション機能の重要性

データ入力時のバリデーションは、以下のようなミスを防ぐために役立ちます。

  • 数値フィールドに文字列が入力されてしまう
  • 必須フィールドが未入力のまま保存される
  • フォーマットが異なるデータが入力される(例:日付やメールアドレス)

バリデーションを適切に設定することで、これらのミスを防ぎ、データの品質を向上させることが可能です。

2. Kintone標準機能のバリデーション設定

Kintoneには、標準で以下のようなバリデーション機能が提供されています。

  • 必須フィールドの設定:フィールドが空の場合に警告
  • 数値フォーマット:数値フィールドに文字列が入力された場合の警告
  • 日付やメールアドレスのフォーマットチェック:適切なフォーマットでない場合の警告

しかし、特定の条件に基づいたバリデーションや、複数フィールドの組み合わせによるチェックなど、より複雑な要件に対応するにはJavaScriptによるカスタマイズが必要です。

3. カスタムバリデーションを追加する方法

以下では、特定のフィールドに対してカスタムバリデーションを追加する具体的な手順を紹介します。

3.1 フォームの設定

まず、Kintoneアプリのフォームにバリデーションを追加したいフィールドを用意します。今回は以下の例で進めます。

  • フィールド名:年齢
  • フィールドコード:age

年齢フィールドに対して、「18歳未満は入力できない」というバリデーションを追加します。

3.2 JavaScriptカスタマイズの設定

次に、JavaScriptでバリデーションを設定します。Kintoneのカスタマイズ画面からJavaScriptファイルをアップロードし、以下のようなコードを追加します。

kintone.events.on('app.record.create.submit', function(event) {
    var record = event.record;
    var age = record.age.value;

    // 年齢フィールドが空かどうかを確認
    if (!age) {
        event.error = '年齢を入力してください。';
        return event;
    }

    // 年齢が18歳未満の場合にエラーメッセージを表示
    if (age < 18) {
        event.error = '18歳未満は入力できません。';
        return event;
    }

    return event;
});

このコードは、レコード作成時に実行され、年齢フィールドが空である場合や、18歳未満である場合にエラーメッセージを表示し、レコードの保存を防ぎます。

Kintone内では以下のようにエラーメッセージが表示されます。

3.3 複数フィールドのバリデーション

次に、複数のフィールドに対してバリデーションを行いたい場合の方法を紹介します。たとえば、電話番号フィールド(フィールドコード:phone_number)に数値のみを入力できるようにする場合です。

kintone.events.on('app.record.create.submit', function(event) {
    var record = event.record;
    var phoneNumber = record.phone_number.value;

    // 電話番号が数字のみで構成されているかチェック
    var phonePattern = /^[0-9]+$/;
    if (!phonePattern.test(phoneNumber)) {
        event.error = '電話番号には数字のみを入力してください。';
        return event;
    }

    return event;
});

このコードでは、電話番号フィールドに数値以外の文字が入力された場合、エラーメッセージを表示し、保存を防ぎます。

Kintone内では、以下のエラーメッセージが表示されます。

4. レコードの更新時にバリデーションを追加する

上記ではレコードの作成時にバリデーションを行いましたが、レコードの更新時にもバリデーションを追加したい場合、以下のようにイベントハンドラーを変更します。

kintone.events.on(['app.record.create.submit', 'app.record.edit.submit'], function(event) {
    var record = event.record;
    var age = record.age.value;

    if (!age || age < 18) {
        event.error = '18歳未満は入力できません。';
        return event;
    }

    return event;
});

このコードでは、レコードの作成時および編集時の両方でバリデーションが行われます。

5. まとめ

Kintoneにカスタムバリデーションを追加することで、より高度なデータ入力ミス防止が可能になります。標準のバリデーション機能に加えて、特定の業務要件に合わせたバリデーションを実装することで、データの品質をさらに向上させることができます。

この記事では、基本的なバリデーションの実装方法を紹介しましたが、実際の業務に合わせて複雑な条件や複数フィールドを組み合わせたバリデーションを行うことも可能です。Kintoneのカスタマイズ機能を活用して、業務効率化とデータの正確性向上を実現しましょう。

このサイトではほかにも、Kintoneの様々なカスタマイズ方法に関する記事も投稿しておりますので、ぜひチェックしてくださいね!

https://arcuss-service.com/knowledge/how-to-auto-day.html