新規投稿
フォローする

レコード番号を0埋めで使いたい

レコードを新規作成で保存した後、レコードを編集するときにレコード番号を使いたいので、
そのスクリプトを作成しておりますが、処理が上手くいきません。
使用したいのは、レコード番号と頭に決まった文字を入れた文字列として扱いたいので、文字列(1行)フィールドに書き出したいです。

例:レコード番号 10 → PW000010

(function() {

"use strict";

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

var record = event.record;

var CommonID = event.CommonID;

var length = 6;
var idLen = kintone.app.record.getId();

// PWを付与して6桁0埋め
record['CommonID'].Value = "PW" + zeroPadding(idLen, length);

return event;

});


function zeroPadding(number, length){
return (Array(length).join('0') + idLen).slice(-length);
}

})();

CommonIDが書き出したい文字列(1行)のフィールドコードとなります。

Javascript初心者のため、ご教示いただけますと幸いです。

0

12件のコメント

Avatar
harada

1)

function zeroPadding(number, length) {
return (Array(length).join("0") + idLen).slice(-length);
}

引数でnumberを受け取っているのに idLenに0を結合させようとしています。idLenをnumberに変更してください。

2)

record['CommonID'].Value = "PW" + zeroPadding(idLen, length);

Javascriptは、大文字小文字を区別します。.Valueになっているので.valueに

record['CommonID'].value = "PW" + zeroPadding(idLen, length);

3)

var CommonID = event.CommonID;

これは何かに使う予定でしょうか。

haradaにより編集されました
0
Avatar
okuyama

harada様

お世話になっております。

早速のご回答ありがとうございます。

record['CommonID'].value = "PW" + zeroPadding(idLen, length);

に修正しました。

var CommonID = event.CommonID;

は使用しませんので削除しました。

こちらで試してみましたが、解消しませんでした…。

試しに、zeroPaddingを使わずに

console.log('PW' + (Array(length).join('0') + idLen).slice(-length))

と記載したところ、コンソールには正しく出力されていましたので、
文字列(1行)フィールドへの設定で何か間違っているのでは、というところまで推測しております。

0
Avatar
harada
function zeroPadding(number, length) {
return (Array(length).join("0") + number).slice(-length);
}

に直されていますか? 

console.logは、動作するとfunctionの引数に使われる変数名違いが起きないのだと思います。

functionを削って

record['CommonID'].value = 'PW' + (Array(length).join('0') + idLen).slice(-length));

でも良いかもしれません。

haradaにより編集されました
0
Avatar
okuyama

harada様

お世話になっております。

早速のご返答ありがとうございます!
ご指摘いただいた通りに修正しましたが、解消いたしませんでした。
ですので、functionを削り、以下のようにしてみました。

(function() {

 "use strict";

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

  var record = event.record;
  var length = 6;
  var idLen = kintone.app.record.getId();

  // PWを付与して6桁0埋め
  record['CommonID'].value = 'PW' + (Array(length).join('0') + idLen).slice(-length);

  return event;

 });

})();

としてみましたところ、コンソールには、

Uncaught TypeError: Cannot set property 'value' of undefined

というエラー?が表示されておりました。

0
Avatar
harada

フォームに フィールドコード CommonID は存在しますか?

こちらではエラーが出ませんでした。

0
Avatar
okuyama

harada様

> フォームに フィールドコード CommonID は存在しますか?
はい、存在しております。

0
Avatar
harada

なぜでしょうね。

Uncaught TypeError: Cannot set property 'value' of undefined

の画面キャプチャーを見せてもらえませんか?

0
Avatar
okuyama

harada様

画面キャプチャーです。
このようなエラーが出ております。

ご確認お願い致します。

0
Avatar
harada

エラーが

Uncaught TypeError: Cannot set property 'value' of undefined

ではないですね。

別のカスタマイズのエラーでのような疑いがあります。

at Object.disabled (downlad.do?xxxxxxx:43)という部分がリンクになっているので押してみてください。そこでエラーになっているとおもいます。43という数字は行数のようなものです。

0
Avatar
harada

わざと、フィールドコードをCommonID2に変更して実行した場合のエラー画面です。参考です。

0
Avatar
okuyama

harada様

> 別のカスタマイズのエラーでのような疑いがあります。

言われて気になって探ってみたところ、設定しているプラグインを削除したら解消しました!
プラグインが原因だったようです。。

このプラグインは標準機能とスクリプトでも実装できるものですので、プラグインを外して対応いたします。

とてもご丁寧にご教示いただき、大変助かりました。
ありがとうございました!!

1
Avatar
harada

プラグインとの競合ですか。勉強になります。

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