shikumika’s diary

日々の事務作業で手間なことを簡単にできる仕組み(自動化、方法など)、困ったことの解決方法を調べた備忘録

【kintone】簡単な自動採番の事例(JavaScriptサンプル)

kintoneのレコード番号は、

  • 自動的に付与される番号で変更できない。
  • レコード番号をkintoneの計算式で使用することができない。
  • レコードを削除して欠番となると、再設定できない。

という仕様です。そのため、アプリ作成時に「ルックアップ機能でレコード番号をキー」にしているとメンテナンス性が悪くなることがあります。具体的には、レコードの削除でレコード番号が欠番となりアプリ間の連携が崩れて、再設定が必要になるなどです。

レコードの削除権限をなくし、連番の状態を維持するという方法もよいですが、レコード番号とは別にキーとなるフィールドを別に持っておくことも有効です。

今回は、その方法として簡単な自動採番のJavaScriptサンプルです。

内容:

アウトプットイメージ

kintoneに「管理番号」という数値型のフィールドを作成し、「前レコードの管理番号に1を追加した自動採番をするJavaScriptです。

管理番号は、一つ前のレコードの管理番号に1追加している

自動採番のアウトプットイメージ
注意点
  • kintoneのライトコースではJavaScriptを利用できないため、本事例で実現できません。
  • 新規レコードの追加時、前レコードの管理番号に1を追加するだけのJavaScriptです。
    管理番号のフィールドは数値型なので、kintoneの自動計算で他の文字列と組み合わせることも可能です。
  • 一つ前のレコード番号には、数値の値が入力されている必要があります(空白の場合はエラーとなります)。
  • レコード追加を同時に複数が実施する利用環境では、「管理番号」が重複する可能性があります。kintoneの機能で「値の重複を禁止する」で重複は回避可能ですが、手入力での修正が必要となることがあります。
参考サイト

参考にさせていただいた情報は以下です。

設定手順

1.kintoneの準備

自動採番をしたいkintoneのアプリに数値型で、フィールドコードを「管理番号」としたフィールドを作成します。

「管理番号」以外の名前にしたい場合は次項のJavaScriptを訂正します。

数値型で、管理番号のフィールドを作成している

フィールドコードを「管理番号」で作成

2.JavaScriptをkintoneに登録

次のコードをエディター(windowsの「メモ帳」など)にコピーし、文字コードを「UTF-8」、BOMなし、ファイル名を適当な名前で保存します。
ファイル名は任意ですが、ファイルの拡張子は「js」にします。

    kintone.events.on(['app.record.create.show','mobile.app.record.create.show'], (event) => {

        // GETのパラメータ
        const body = {
            // 当月中の最新レコードから一つ前
            'app':event.appId,
            'query':'limit 1',
            'fields': ['管理番号']
        };
        return kintone.api(kintone.api.url('/k/v1/records.json', true), 'GET', body).then((resp) =>{
            event.record['管理番号'].value = parseInt(resp.records[0].管理番号.value) + 1;
            return event;
        });
});

 

保存したファイルをkintoneにアップロードします。

この事例では、

'app.record.create.show','mobile.app.record.create.show'

としているので、PCとスマートフォンは共通です。

「PC用のJavaScript」と「スマートフォン用のJavaScript」に同じファイルをアップロードします。

「PC用のJavaScript」と「スマートフォン用のJavaScript」にアップロードして追加している

JavaScriptをkintoneにアップロード

これで設定は完了です。

「レコードを追加する」をクリックすると、「管理番号」が自動採番されます。

なお、このJavaScriptは、一つ前のレコードの「管理番号」には、数値が入力されている必要があります。空白の場合はエラーとなるため、数値を入力しておきます

以上、kintoneで簡単な自動採番の事例(JavaScriptサンプル)でした。