見出し画像

kintoneで「複数項目の組み合わせ重複」を保存前に防ぐ|設定表だけで導入


「顧客コードは同じでも、対象年月が違えば登録したい」

「社員番号と研修日の組み合わせが同じときだけ、保存を止めたい」

kintone標準の重複禁止は、単一項目なら便利です。しかし、次のような複数項目を一組にした重複判定が必要になることがあります。

  • 顧客コード+対象年月

  • 社員番号+研修日

  • 商品コード+倉庫コード

  • 担当者+訪問日

そこで、設定表を書き換えるだけで組み合わせ重複を確認できるStarterテンプレートを作りました。

設定するのはRULESだけ

{
  fields: ['customer_code', 'target_month'],
  labels: ['顧客コード', '対象年月'],
  skipIfBlank: true,
  message: '同じ顧客コードと対象年月がすでに登録されています。'
}

`fields` にフィールドコードを並べると、そのすべてが一致する既存レコードを検索します。

片方だけが同じ場合は保存できます。両方が同じ場合だけ、対象フィールドと画面上部にエラーを表示して保存を止めます。

編集時に自分自身を重複扱いしません

既存レコードを編集するときは、編集中のレコードIDを検索対象から除外します。

そのため、値を変更せずに保存しただけで自分自身を重複扱いすることはありません。別のレコードと同じ組み合わせへ変更した場合はエラーになります。

対応画面

PC:新規登録/編集/一覧インライン編集

モバイル:新規登録/編集

モバイル一覧インライン編集は、kintone側に該当イベントがないため対象外です。

購入前に確認してください

  • 同じアプリ内の既存レコードを検索します。

  • 基本対象は、文字列(1行)、日付、ドロップダウンなど、kintoneクエリの完全一致に対応するフィールドです。

  • サブテーブル、複数選択型、添付ファイルは対象外です。

  • 利用者に対象レコードとフィールドの閲覧権限が必要です。

  • 閲覧権限のないレコードは検出できません。

  • API通信に失敗した場合は、安全のため保存を停止します。

重要な制限として、保存直前に既存レコードを検索する方式のため、複数人が完全に同時に同じ組み合わせを保存した場合まで、データベース制約のように絶対保証するものではありません。

単一項目だけを重複禁止にしたい場合は、本商品より先にkintone標準の「値の重複を禁止する」を検討してください。

購入後に受け取れるもの

  1. 完成JavaScript

  2. 2項目・3項目・複数ルールの設定例

  3. 導入・画面別テスト手順

  4. 対応範囲と制限事項

  5. 静的QA・模擬APIテスト結果

コードは24項目の模擬APIテストとJavaScript構文チェックを実施しています。実際のkintone環境での確認は購入者側で必要です。


【ここに有料ラインを設定】(しばらく無料)


ダウンロード

価格:500円

最短の導入手順

  1. ZIPを展開します。

  2. `02_設定例.txt` を参考に、本体上部の `RULES` を書き換えます。

  3. kintoneのJavaScriptカスタマイズ画面でPC用ファイルに追加します。

  4. モバイルでも利用する場合は、スマートフォン用にも追加します。

  5. アプリを更新します。

  6. `03_導入・テスト手順.txt` に沿って確認します。

最初から本番アプリへ適用せず、テスト用アプリまたは本番アプリのコピーで確認してください。

3項目の組み合わせにも対応

{
  fields: ['employee_no', 'training_date', 'course_code'],
  labels: ['社員番号', '研修日', '講座コード'],
  skipIfBlank: true,
  message: '同じ社員・研修日・講座の受講記録があります。'
}

RULES配列へ設定を追加すれば、別の組み合わせルールも同時に確認できます。

空欄を含む場合

`skipIfBlank: true` なら、組み合わせ内のどれかが空欄の場合は重複検索を行いません。

各項目を必須にしたい場合は、kintone標準の必須設定、または第一号の入力チェックStarterと併用してください。

第一号もあります

必須、半角数字、半角英数字、文字数、禁止文字など、項目単体の入力ルールにはこちらを使用できます。

kintone入力チェックStarter

公式仕様

2026年8月19日時点の公式仕様を確認して作成しています。

いいなと思ったら応援しよう!