0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

kintoneカスタマイズで自動採番する方法

Posted at

概要

kintoneアプリで「連番の入力が必要な項目」がある場合、手入力だとミスのリスクや手間がかかります。
この記事では、kintoneカスタマイズで自動採番をする方法をご紹介します。

やりたいこと

  • 「アイテムID」フィールドに、各レコードごとに一意のアイテムID(例:ID_0001, ID_0002...)を自動で入力したい
  • 例えば、アプリにID_0003まで存在していた場合、追加画面を開いたときに、ID_0004が自動で入力されるようにしたい

画面イメージ

【一覧画面】
一覧画面のアイテムID.png

【追加画面】
追加画面のアイテムID.png

実装ポイント

  • kintone REST APIを使って、 アイテムIDの最大値を取得
  • 数字部分を+1にして、新しいアイテムIDを生成
  • 生成したアイテムIDをフィールドに自動入力
  • ユーザーが手動で編集できないように設定

実装例

(() => {
  "use strict";

  const ITEM_ID_FIELD = "itemId"; // フィールドコード
  const PREFIX = "ID_";
  const PAD_LENGTH = 4; // 連番の桁数

  // レコード追加画面で自動採番
  kintone.events.on("app.record.create.show", async (event) => {
    try {
      // 既存レコードのうち、最大のアイテムIDを取得
      const resp = await kintone.api(kintone.api.url("/k/v1/records"), "GET", {
        app: kintone.app.getId(),
        fields: [ITEM_ID_FIELD],
        query: `order by ${ITEM_ID_FIELD} desc limit 1`,
      });

      let maxIdNum = 0;

      if (resp.records.length > 0) {
        const latestItemId = resp.records[0][ITEM_ID_FIELD].value;
        // 最大のアイテムIDから数字部分のみ抽出
        const numPart = parseInt(latestItemId.replace(PREFIX, ""), 10);
        if (!isNaN(numPart)) {
          maxIdNum = numPart;
        }

        const newIdNum = maxIdNum + 1;
        // 新しいアイテムIDを(ID_××××)の形式で作成
        const newItemId = PREFIX + String(newIdNum).padStart(PAD_LENGTH, "0");
        // 新しいアイテムIDをアイテムIDフィールドにセット
        event.record[ITEM_ID_FIELD].value = newItemId;
        event.record[ITEM_ID_FIELD].disabled = true;
      }
    } catch (error) {
      console.error("自動採番でエラーが発生しました", error);
      alert("アイテムIDの自動採番に失敗しました。");
    }
    return event;
  });

  // 編集画面とインライン編集で編集不可
  kintone.events.on(
    ["app.record.edit.show", "app.record.index.edit.show"],
    (event) => {
      if (event.record[ITEM_ID_FIELD].value) {
        event.record[ITEM_ID_FIELD].disabled = true;
      }
      return event;
    }
  );
})();

注意点

  • アイテムIDはフィールド設定画面にて 「値の重複を禁止する」 にチェックを入れておく
    →複数人が同時にレコードを追加しようとした時に、同じアイテムIDが割り当てられるのを防止するため
  • ユーザーが手動でアイテムIDを変更しないように、追加画面だけでなく、編集画面とインライン編集画面でも編集不可にする処理が必要
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?