独自フォーマットの連番を自動採番して、レコードを登録する

目次

概要

見積番号を自動採番して登録するサンプルプログラムです。

完成形

下準備

  • kintoneアプリ( kintoneアプリストア (External link) の「 商品見積書パック (External link) 」を使います)
  • 「商品見積書パック」に含まれる「見積書」アプリのフィールド「見積番号」を次のように設定します。
    • 「必須項目にする」にチェック
    • 「値の重複を禁止する」にチェック
  • エディター

サンプルプログラム

サンプルプログラムでは、 Cybozu CDN の利用、JavaScriptのサンプルを紹介します。

PC用のJavaScriptファイル

詳細設定から「JavaScript / CSSによるカスタマイズ」を開き、 Cybozu CDN から次のライブラリを指定します。

  • Luxon
    https://js.cybozu.com/luxon/3.3.0/luxon.min.js

JavaScriptサンプル

次のサンプルプログラムをエディターにコピーして、ファイル名を「sample.js」、文字コードを「UTF-8」、BOMなしで保存します。
ファイル名は任意ですが、ファイルの拡張子は「js」にしてください。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
/*
 * Autofill number sample
 * Copyright (c) 2014 Cybozu
 *
 * Licensed under the MIT License
 * https://opensource.org/license/mit/
 */

(() => {
  'use strict';
  // レコード追加、編集画面の表示前処理
  const eventsShow = ['app.record.create.show', 'app.record.edit.show', 'app.record.index.edit.show'];
  kintone.events.on(eventsShow, (event) => {
    const record = event.record;
    if (('app.record.create.show').indexOf(event.type) >= 0) {
      record.見積番号.value = '';
    }
    record.見積番号.disabled = true;
    return event;
  });
  // レコード追加画面の保存前処理
  kintone.events.on('app.record.create.submit', (event) => {
    let recNo = 1;
    const record = event.record;
    const date = luxon.DateTime.local();
    const params = {
      app: kintone.app.getId(),
      query: 'limit 1',
      fields: ['$id']
    };
    return kintone.api(kintone.api.url('/k/v1/records', true), 'GET', params).then((resp) => {
      if (resp.records[0] !== null) {
        recNo = parseInt(resp.records[0].$id.value, 10) + 1;
      } else {
        event.error = '見積番号が取得できません。';
      }
      // 自動採番を見積番号に設定する
      const autoEstNo = `${date.toFormat('yyyyMMdd')}-E${('000' + recNo).slice(-3)}`;
      alert(`見積番号 ${autoEstNo} を登録します`);
      record.見積番号.value = autoEstNo;
      return event;
    }).catch((resp) => {
      record.見積番号.error = '見積番号が取得できません。';
      return event;
    });
  });
})();

設定した画面

「JavaScript / CSSによるカスタマイズ」画面でそれぞれ設定した例を紹介します。

使用したAPI

  1. アプリのIDを取得する
  2. APIのURLを取得する
  3. kintone REST APIリクエストを送信する
  4. イベントハンドラーを登録する
  5. レコード追加画面で保存するときのイベント
  6. フィールド要素を取得する

デモ環境

デモ環境で実際に動作を確認できます。

ログイン情報は cybozu developer networkデモ環境 で確認してください。