kintoneでは標準機能だけでは自由な形式の自動採番を作成することが難しいため、JavaScriptカスタマイズを利用して独自の番号管理を行うケースがあります。特に、既存のサンプルコードを変更して「日付+記号」ではなく、指定した数字から始まる単純な連番を発行したいという場面は多くあります。
この記事では、kintoneのJavaScriptを使って任意の開始番号から自動採番する方法や、既存の自動採番サンプルを変更するポイントについて解説します。
kintoneの自動採番で任意の数字を開始値にする考え方
kintoneで自動採番を行う場合、基本的には現在登録されている最新レコード番号を取得し、それに1を加えることで次の番号を作成します。
例えば、最初の番号を1000番から開始したい場合は、データが存在しない状態では「1」ではなく「1000」を設定します。その後は1001、1002というように増加させます。
元のサンプルコードでは以下の部分で番号を作成しています。
let recNo = 1;
この初期値を変更することで開始番号を指定できます。
let recNo = 1000;
ただし、単純に初期値を変更するだけでは、既存レコードがある場合の処理も調整する必要があります。
日付や記号を削除して単純な連番に変更する方法
元のコードでは以下のように、日付と記号を組み合わせて番号を作成しています。
const autoEstNo = `${date.toFormat('yyyyMMdd')}-E${('000' + recNo).slice(-3)}`;
この部分では「20260101-E001」のような形式を作っています。単純な数字だけにしたい場合は、文字列加工を削除します。
変更後は以下のようになります。
const autoEstNo = recNo;
これだけで、見積番号フィールドには「1000」「1001」「1002」のような数字だけが登録されます。
任意の開始番号から採番するkintone JavaScript例
以下は、1000番から開始して1ずつ増加するシンプルな自動採番の例です。
(() => {
'use strict';
kintone.events.on('app.record.create.submit', async (event) => {
const record = event.record;
let recNo = 1000;
const params = {
app: kintone.app.getId(),
query: 'order by $id desc limit 1',
fields: ['$id']
};
try {
const resp = await kintone.api(kintone.api.url('/k/v1/records', true), 'GET', params);
if (resp.records.length > 0) {
recNo = parseInt(resp.records[0].$id.value, 10) + 1 + 999;
}
record.見積番号.value = recNo;
return event;
} catch (err) {
record.見積番号.error = '番号取得に失敗しました。';
return event;
}
});
})();
この例では、レコードIDを利用して番号を増加させています。最初の番号を変更したい場合は「999」の部分を調整します。
例えば5000番から開始したい場合は、5000になるように初期値計算部分を変更します。
kintoneのレコード番号を利用した採番の注意点
サンプルコードではkintoneのレコードIDを利用していますが、レコードIDは削除したデータがあっても欠番になるため、完全な連続番号になるとは限りません。
例えば、1000番、1001番を登録後に1001番のレコードを削除した場合、次回登録される番号は1002番になります。
請求番号や注文番号など、欠番が許されない管理番号として利用する場合は、専用の採番用アプリやカウンター管理用レコードを作成する方法が安全です。
重複を防ぐために考慮すべきポイント
複数ユーザーが同時にレコードを追加する場合、単純な取得処理では同じ番号が発行される可能性があります。
例えば、AさんとBさんが同時に登録ボタンを押した場合、両方が最後の番号を取得して同じ次番号を作成するケースがあります。
重要な番号管理を行う場合は、採番専用アプリで番号を管理したり、登録後に重複チェックを行う仕組みを追加すると安全です。
任意の番号から始める場合の設定ポイント
単純な管理番号として利用するだけであれば、以下の3点を変更すれば対応できます。
- 初期値を希望する開始番号に変更する
- 日付や記号を作成している処理を削除する
- 採番フィールドへ数字だけを設定する
例えば「10000番から始まる案件番号」を作成したい場合でも、基本的な仕組みは同じです。
既存のkintone公式サンプルは拡張しやすく作られているため、不要な文字列加工部分を削除することで、自社独自の番号形式へ変更できます。
まとめ
kintone JavaScriptで任意の数字から自動採番する場合、既存のサンプルコードにある日付や記号の生成処理を削除し、開始番号と連番処理だけを残すことで実現できます。
単純な連番であればレコードIDを利用した方法でも対応できますが、重要な管理番号では同時登録や欠番への対策も必要になります。
利用目的に合わせて採番方法を選び、kintoneのJavaScriptカスタマイズで使いやすい番号管理を構築するとよいでしょう。


コメント