新規投稿
フォローする

レコード権限がない場合でも一意な自動採番を行う方法について

お世話になっております。
 
下記ソースより、自動採番を行う実装しております。
ただし、下記ソースでは、ログインユーザのアクセス権限があるレコード番号から、
採番用の値を取得・カウントアップをする挙動となっております。
 
ログインユーザのアクセス権限がないレコードを含めて番号をカウントアップできるように方法はございませんでしょうか?
 
また、下記コミュニティサイトを確認したところ、アクセス権限がないレコードを含めて
番号のカウントアップを行うには、自動採番プラグインの API トークン設定機能を利用するとの記述を確認いたしました。
自動採番プラグインを使用せず、下記ソースコードから、実装することは可能でしょうか?
 
 
 
(function() {

    "use strict";




    // 自動採番関数の設定

    function autoNum(event) {

        var record = event.record;




        // 作成日時フィールドからをYYMMを取得する

        var dt = record['作成日付'].value;

        console.log(dt);

        var dtyymm = dt.substring(0, 7);

        console.log(dtyymm);

        var yymm = dt.substring(2, 7).replace("-","");

        console.log(yymm);

        var dtmin = dtyymm + '-01';

        

        // クエリ文の設定

        var query = {

            "app": kintone.app.getId(),

            "query": '作成日時 >= "' + dtmin + '" order by レコード番号 desc limit 1'

        };

        

        

        // 設定された日付から最新の番号を取得する

        return kintone.api(kintone.api.url('/k/v1/records', true), 'GET', query).then(function(resp) {

           var records = resp.records;

            

            // 対象レコードがあった場合

            if (records.length > 0) {

                var rec = records[0];

                var autono = rec['受付番号'].value;

                console.log(autono);

                autono = parseInt(autono.substring(6),10) + 1;

                console.log(autono);

                

                //autono = parseInt(autono.substring(3), 10) + 1;

                autono = '00000' + autono;

                autono = yymm + '-' + autono.substring(autono.length - 5);

                console.log(autono);

                

                event.record['受付番号'].value = autono;




            // 対象レコードがなかった場合

            } else {

                event.record['受付番号'].value = yymm + '-00001';

            }

            return event;

          }).catch(function(e) {

            alert("レコードの取得でエラーが発生しました  - error: " + e.message);

            return false;

        });

    }

    

  //新規作成画面の保存 

     kintone.events.on('app.record.create.show', function(event) { 

      if (!event.reuse) {

         return autoNum(event);

      }

      return event;

     });




    // 新規作成画面表示

    kintone.events.on('app.record.create.show', function(event) {

       var record = event.record;

        //フィールドを非活性にする

        if (!event.reuse) {

            record['受付番号'].disabled = true;

            record['作成日付'].disabled = true;

            return event;

        }

      return event;  

    });










    // 編集画面表示

    kintone.events.on(['app.record.edit.show', 'app.record.index.edit.show'], function(event) {

      var record = event.record;

        //フィールドを非活性にする

        if (!event.reuse) {

            record['受付番号'].disabled = true;

            record['作成日付'].disabled = true;

            return event;

        }

      return event;

    });

    

})();



0

1件のコメント

Avatar
Ryoji

ご認識のとおりkintone.apiではアクセス権限のないレコードを取得できません。
アプリのAPIトークンを発行してkintone.proxyで取得すれば、記載されているコードを大きく変えずに実現できるはずです。

https://developer.cybozu.io/hc/ja/articles/202166320-%E5%A4%96%E9%83%A8API%E3%81%AE%E5%AE%9F%E8%A1%8C

0
サインインしてコメントを残してください。