オープンソースWebDBのプリザンター(pleasanter)ブログ

オープンソースのWebDBのプリザンター(pleasanter)のブログとサービス情報サイトです

カテゴリ : お知らせプリザンターとは?使い方スクリプト・スタイル環境構築事例動画

【わかりやすく解説】自動採番(インクリメント)のスクリプトを紹介!

こんにちは。
リーデックス小川です。

オリンピックも迫ってきましたね。コロナ禍で選手の皆さんも競技以外でもいろいろ気を使い大変だと思いますが、ぜひ頑張ってほしいです。私は家でテレビの前から応援したいと思います。

さて、今回は、自動採番(インクリメント)について、スクリプトを紹介します。プリザンターのデフォルトにはないため、ぜひ参考にしてカスタマイズして使ってみてください。

 

 実際の画面で説明

今回は、新規登録画面でボタンをクリックすると数字4桁の連番を分類Aに設定するサンプルとして挙げます。

下記画面で赤枠の「取得」ボタンをクリックすると、

f:id:h-ogawa-reedex-co-jp:20210715185929p:plain

 

分類Aに設定されている最大の数値+1の値が設定されるようになっています。

f:id:h-ogawa-reedex-co-jp:20210715190003p:plain

 

サンプルスクリプト

実際のサンプルスクリプトは下記となります。

$p.ex.execRecreate = function(){
     var apiKey = '';
     $p.apiGet({
         'id': $p.siteId(),
         'data': {
             'ApiKey': apiKey,
             'Offset': 0,
             'View': {
                 'ColumnSorterHash': {
                     'ClassA': 'desc'
                 }
             }
         },
         'done': function (data) {
             let Num;
             if (typeof data.Response.Data[0] === "undefined"){
                 Num=0
             }
             else{
                Num = data.Response.Data[0].ClassA.slice(-4);
             }
             if (Num != null) {
                 Num++;
                 var result = ('0000' + Num).slice(-4);
                 $p.set($('#Results_ClassA'), result);
 
             } else {
                 alert('エラー:自動採番できませんでした。');
             }
         },
         'fail': function () {
             alert('自動採番処理に失敗しました');
         },
         'always': function () {
         }
     });
 }
 
 
 $p.events.on_editor_load = function(){

     let $button = $('<button id="rdx_reget" style="float: left; white-space: nowrap; margin-left:5px;">取得</button>').button({ icon: 'ui-icon-arrowrefresh-1-w' });
     $('#Results_ClassA').parent().css('display', 'inline-flex')
     $('#Results_ClassA').after($button);
 
     $(document).on('click','#rdx_reget',function(event){
         event.preventDefault();
         $p.ex.execRecreate();
     });
 };

 

スクリプトとしてはそこまで難しくなく

  1. テーブルの分類A(ClassA)に設定されている最大値(数値)を取得($p.apiGet)
  2. 上記値に+1をする(1件もデータがない場合は1を設定)
  3. データを分類Aに値を設定

という処理を行っています。 $p.apiGetのColumnSorterHashで、ClassAで降順に並び替えたうえで一番大きい値を1件取得していることがわかります。

 

「$p.events.on_editor_load」は、新規画面や編集画面が表示されたときに実行される処理です。今回は、取得ボタンの追加と、ボタンクリック時の処理がプログラミングされています。詳細は、下記記事に説明がありますので参考してもらえればと思います。

pleasanter.hatenablog.jp

 

 また、$p.apiGetのスクリプトについては、公式サイトや下記記事も参考になりますので、時間があればぜひご覧ください。

pleasanter.hatenablog.jp

 

上記サンプルの実行方法

任意のフォルダに「記録テーブル」を作成し、管理画面のエディタより「分類A」追加してください。その後、「スクリプト」タブにて、上記スクリプトを任意の名前で登録し、更新することで利用することができるようになります。

スクリプトの追加方法は、下記に記載されていますので、ぜひご覧ください。少し古い記事ですが、使い方は同じなので問題ないと思います。 

pleasanter.hatenablog.jp

 

 

まとめ

今回は、自動採番(インクリメント)のスクリプトをご紹介しました。「文字列+連番」と、文字列と数字の組み合わせで利用している方もいらっしゃると思いますので、今回のスクリプトを参考に、ぜひ利用してみてください。

弊社では、スクリプトやスタイルを利用したカスタマイズについてご支援させていただいております。スクリプトについて相談したい、業務を改善のために実現したい機能がある、や、本記事や過去の記事のスクリプトを応用したい、などありましたら、お気軽にお問合せください。

それでは、今回はこの辺で。
最後までご覧いただき、ありがとうございました。