運用相談してみる 最適なサービスをご提案します 簡単
30秒

目次

こんにちは!
ジョイゾーのプラグインお問い合わせ担当の伊藤です。
日頃より弊社製品をご利用いただき、誠にありがとうございます。

今回は、多くのお客様にご利用いただいている自動採番プラグインについて、「実際のところ、裏側でどうやって次の番号を計算しているの?」という疑問にお答えする、詳細解説ブログをお届けします!
💡自動採番プラグインの詳細な機能についてはこちらのブログをご確認ください!

kintoneで「見積番号」や「顧客ID」を自動で振ってくれる、自動採番プラグイン。とても便利なのですが、サポート窓口にはこんなお問い合わせをよくいただきます。

「順調に番号が振られていたのに、急に『1』に戻っちゃった!」
「途中の番号を削除したら、次はどうなるの?」
「月が変わったら、なんだか番号の動きがおかしい…」
「番号が重複した・・・」
「一括採番を実行したら、エラーで止まってしまった」

よくある質問サイトでも採番ルールについてご説明していますのでぜひ一緒にご確認ください。
そこで今回は、プラグインの「採番ルールの基本と裏側の動き」を、分かりやすく噛み砕いて解説します!

絶対に外せない!フォーマット作成の「三大ルール」

まずは、設定画面で番号の書式を作るときの基本ルールです。ここは絶対に守っていただく必要があります。

「連番」は1回のみ選択可能、かつ必須で選択

番号をカウントアップしていくための「連番」は、必ず書式の中に1つだけ入れてください。
設定画面で「連番桁数」を指定すると、その桁数に応じてゼロ埋めされた番号(例:3桁なら001)が組み込まれます。

「半角ハイフン(-)」または「半角アンダースコア(_)」は必須項目

各パーツの間には「半角ハイフン(-)」または「半角アンダースコア(_)」を接続語として設定します。
これらは必須項目となっているので、設定しないで保存することはできません。

「日付 / 採番実行月初日 / 採番実行月末日」は1回のみ選択可能

書式は最大3つまで組み合わせられ、日付は、書式の中にどれか1つしか使えません。

日付
  • 年月日(YYYYMMDD)
  • 年月(YYYYMM)
  • 月日(MMDD)
  • 月日年(MMDDYYYY)
  • 月日年2桁(MMDDYY)
  • 月年(MMYYYY)
  • 月年2桁(MMYY)
  • 年月2桁(YYMM)
  • 年(YYYY)
  • 年2桁(YY)
採番実行月初日 採番した月の「初日(1日)」が自動で入ります。形式は日付と同様に複数から選べます
採番実行月末日 採番した月の「末日」が自動で入ります。

 

通常採番

採番の基本の動き

  1. 採番対象フィールドに値が入っているレコードのうち、レコード番号が最大のレコードを1件取得する
  2. そのレコードの採番値に+1する
  3. 同じ採番値の文字列が既にないかさがし、あれば連番をさらに+1して再試行する

ここで、プラグインの基本の動きについて、事前に知っておいていただきたい2つの注意事項をお伝えします!

①途中のレコードを削除しても、番号は詰められません。常に「一番大きいレコード番号の採番値+1」で前に進むため、空き番が自動で埋まることはない点にご注意ください。
②レコード編集時、すでに番号が入っていれば再採番はされません。自動で番号が振られるのは「対象フィールドが空欄のとき」だけですのでご安心ください!

それでは、通常採番のパターンを見ていきましょう!

①綺麗に番号が並んでいる場合(通常パターン)

レコード番号「1〜5」が存在し、いずれも採番済みで最大レコード番号「5」の採番値が「A-005」だったとします。


次に採番される値は最大レコード番号を起点に次の番号を振るので、レコード番号「6」の採番値は「A-006」となります。


この場合は、通常の採番パターンで動くため想定している採番値になります!
次に、レコード番号と採番値の大小がずれている場合をご説明します。

②レコード番号と採番値の大小がずれている場合(通常採番)

レコード番号「5」の採番値が「A-006」レコード番号「6」の採番値は「A-005」となっているとします。

このときも、まずレコード番号が最大の「6」を見に行き、連番「A-005」に+1して「A-006」を候補にします。
ここで通常採番では重複チェックが働き、採番値「A-006」が既にレコード「5」で使われているということがわかり、採番値は「A-007」が採用されます。

このように重複チェックが行われ、重複することなく新規採番をを行うことができます。

③通常採番でもこんな場合は要注意!

通常採番でもこんな場合は、うまく採番ができないので注意です!

  • 閲覧権限により、採番済みのレコードが操作ユーザーから見えない

  • 書式に日付が含まれ、過去レコードと「日付部分」が異なる

  • 書式が異なり、文字列が完全一致しない

閲覧権限が絡む重複

全体としてレコード番号7(採番値「A-007」)が存在しているのに、操作ユーザーAさんにはレコードの閲覧権限がありレコード6までしか見えないとします。


その場合の採番値は以下のようになります。
Aさんが保存するときにはAさんに見える範囲の最大レコード番号「6」を基準にします。
そうなると自動採番は、連番「A-006」+1 → 「A-007」を採番しようとします。Aさんには見えていないレコード番号『7』「A-007」重複する可能性があります。

自動採番の重複チェックは、採番しようとしている人のkintoneの管理権限に従い動くため、見えるレコード内でしか重複チェックを行いません。
そのため、全体のレコードとして採番が重複する可能性があります。

☝️ここで解決ポイント!

アプリにレコードの閲覧権限設定がある場合はAPIトークンの設定をしてください!

プラグイン設定でAPIトークンを有効にすると、ログインユーザーの権限に依存せず、アプリ内のレコードを参照して採番することができます。
設定するAPIトークンには、「レコード閲覧」「レコード編集」の権限が必要です。

【設定方法】
①アプリの設定からAPIトークンの設定に移動し、「生成する」ボタンをクリックし、APIを生成します。
②アクセス権に「レコード閲覧」「レコード追加」にチェックをつけます。


③自動採番プラグインの設定に移動し、「共通設定」の「APIトークン」に上で生成したトークンの入力をします。

こうすることで、自動採番から「見える範囲」が全レコードに広がるため、閲覧権限を付与していても重複することなく採番をすることが可能です。

日付が関わる採番

書式に日付系を使い、設定で連番リセットのタイミング(年毎 / 月毎 / 日毎 / 年度毎)を指定している場合、日付部分が変わると連番は1に戻ります

月毎リセット + 年月形式 4月の202504-099の次は、5月なら202505-001
年毎リセット 2025年の2025-100の翌年(2026年)は2026-001
日毎リセット 4月29日の0429-010の翌日(4月30日)は0430-001

過去の採番済みレコードと書式が異なる採番

過去に採番しているものからテキスト部分の変更や、接続語の種類が変わった場合なども、リセット扱いで1から始まることがあるためご注意ください!

一括採番

一括採番は、通常採番とは重複時の動きが異なります!

基本の動き

  1. 採番済みレコードのうち、レコード番号が最大のレコードの採番値を基準に、次の連番を開始番号とする(通常採番と同じ起点)
  2. 開始番号から順に、空欄レコードへ番号を振っていく(1件ずつ連番を+1)
  3. 保存前に、今回振ろうとする最初の番号が既に存在しないかチェックする

①一括採番を実行する際、すでに番号が振られている過去のデータが新しい番号で上書きされることはありません!
 対象のフィールドが「空欄」になっているレコードだけを狙って番号を振ります。
②自動採番の対象フィールドを「テーブル内のフィールドのみ」に設定しているアプリでは、この一括採番機能をご利用いただけません。

それでは一括採番のパターンを見ていきましょう!

①綺麗に番号が抜けているパターン

レコード番号「1〜10」が存在し、レコード番号「7」まで採番されているとします。


この場合、最大のレコードの採番値を基準に次の連番を開始番号とするため、開始番号から順に空欄レコードへ番号を振っていきます。


レコード番号「8」からレコード番号「10」まで連番を+1されます!


このように綺麗に採番することができます!
次に、レコード番号と採番値の大小がずれている場合をご説明します。

②レコード番号と採番値がずれている場合(一括採番)

レコード番号「9」の採番値が「A-010」、レコード番号「10」の採番値は「A-009」となっているとします。
そのため、一括採番の対象レコードは、レコード番号11以降の空欄となっているレコード2件となります。

最大レコード「10」「A-009」を基準に、開始番号は「A-010」として採番を始めます。
空欄のレコード「11」「A-010」を振ろうとします。

保存前チェックで、レコード「9」が既に「A-010」を使用していることを検出し、「開始番号[A-010]が既に採番されています」 というエラーで処理が中止されてしまいます。


一括採番では、重複が発生した時点で採番を中止する流れになっています。

☝️ここで解決ポイント!

最大レコード番号には、最大の採番値を入るよう事前にデータを整えておくとばっちり採番することができます!

  1. プラグインの利用を一度OFFにします。
  2. 採番対象フィールドに49という数値が入ったレコードを登録します。
  3. プラグインの利用をONに戻します。
  4. その後に新たなレコードを作成すると、そのレコードの採番番号は50となります。

💡方法については、こちらのよくある質問でも紹介していますのでぜひご確認ください!

採番値管理フィールドを使う採番

「日付」「採番実行月初日」「採番実行月末日」のいずれかを使い、かつ連番リセットを行わない場合に、採番値管理フィールドの設定が必要になります。

基本の動き

  1. 採番値管理フィールドに値が入っているレコードのうち、採番値管理フィールドの数値が最大のレコードを1件取得する
  2. その数値に+1したものを、次の連番とする

採番値管理フィールドを利用して採番をするときは、純粋に採番値管理フィールドの中にある一番大きい数字だけを見て、シンプルに「+1」をしていく動きになります。
そのため、レコード番号と採番値の大小がずれていても問題なく採番することが可能です。


一見、呪文のように難しく見える自動採番のルールですが、基本は「最大値に+1」「一括採番時は被るとストップする」「権限を絞るならAPIトークンが必須」という仕組みが分かれば、もう設定で怖いものはありません!
「通常採番」と「一括採番」の違いを押さえておくだけでも、運用トラブルはグッと減らすことができます。

自動採番プラグインの「採番ルール」については、サポート窓口にも毎日のように多数のお問い合わせをいただきます!
そこで💡こちらのブログでは、これまでにいただいたリアルなお問い合わせ内容をもとに、よくあるつまずきポイントとその解決策をQ&A形式で詳しく解説していきます。
「うちのアプリでも同じ現象が起きている!」とお悩みのことがありましたら、ぜひ当てはまるものを探してみてください。

おわりに

実際の活用イメージをもっと具体的に知りたい方は、弊社プラグインをご利用いただいているお客様の導入事例も多数公開しておりますので、ぜひあわせてご覧ください。

また、ジョイゾーのプラグインはすべて30日間の無料お試し可能です。
「うちの会社の業務フローに合うかな?」と迷ったら、まずは無料でお試しいただき、実際の操作感を体感していただければ嬉しいです。
ご不明点等ございましたら、よくある質問をご参照ください。
よくある質問をご覧いただいても解決しない場合は、お気軽にお問い合わせください。
また、サービスサイトの画面左下に表示されるチャットサポートからもお問い合わせいただけます。
サポート担当へリアルタイムで問い合わせることも可能ですので、ぜひご活用ください。

kintoneをもう一歩便利にする
kintoneプラグインを是非お試しください!

この記事を書いた人
アバター画像
ジョイゾープラグイン事務局

関連Connection