レコードを新規作成で保存した後、レコードを編集するときにレコード番号を使いたいので、
そのスクリプトを作成しておりますが、処理が上手くいきません。
使用したいのは、レコード番号と頭に決まった文字を入れた文字列として扱いたいので、文字列(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初心者のため、ご教示いただけますと幸いです。
function zeroPadding(number, length) {
return (Array(length).join("0") + idLen).slice(-length);
}
引数でnumberを受け取っているのに idLenに0を結合させようとしています。idLenをnumberに変更してください。
record['CommonID'].Value ="PW"+ zeroPadding(idLen, length);
Javascriptは、大文字小文字を区別します。.Valueになっているので.valueに
record['CommonID'].value ="PW"+ zeroPadding(idLen, length);
var CommonID = event.CommonID;
これは何かに使う予定でしょうか。
harada様
お世話になっております。
早速のご回答ありがとうございます。
record['CommonID'].value = "PW" + zeroPadding(idLen, length);
に修正しました。
varCommonID =event.CommonID;
は使用しませんので削除しました。
こちらで試してみましたが、解消しませんでした…。
試しに、zeroPaddingを使わずに
console.log('PW' + (Array(length).join('0') + idLen).slice(-length))
と記載したところ、コンソールには正しく出力されていましたので、
文字列(1行)フィールドへの設定で何か間違っているのでは、というところまで推測しております。
functionzeroPadding(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様
お世話になっております。
早速のご返答ありがとうございます!
ご指摘いただいた通りに修正しましたが、解消いたしませんでした。
ですので、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
というエラー?が表示されておりました。
フォームに フィールドコード CommonID は存在しますか?
こちらではエラーが出ませんでした。
harada様
> フォームに フィールドコード CommonID は存在しますか?
はい、存在しております。
なぜでしょうね。
Uncaught TypeError: Cannot set property 'value' of undefined
の画面キャプチャーを見せてもらえませんか?
harada様
画面キャプチャーです。
このようなエラーが出ております。
ご確認お願い致します。
エラーが
UncaughtTypeError: Cannot set property'value'ofundefined
ではないですね。
別のカスタマイズのエラーでのような疑いがあります。
at Object.disabled (downlad.do?xxxxxxx:43)という部分がリンクになっているので押してみてください。そこでエラーになっているとおもいます。43という数字は行数のようなものです。
わざと、フィールドコードをCommonID2に変更して実行した場合のエラー画面です。参考です。
harada様
> 別のカスタマイズのエラーでのような疑いがあります。
言われて気になって探ってみたところ、設定しているプラグインを削除したら解消しました!
プラグインが原因だったようです。。
このプラグインは標準機能とスクリプトでも実装できるものですので、プラグインを外して対応いたします。
とてもご丁寧にご教示いただき、大変助かりました。
ありがとうございました!!
system
(system)
クローズされました:
14
このトピックはベストアンサーに選ばれた返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。