半角から全角変換(保存時)

お世話になります。

項目変更時に半角⇒全角への変換は下記の通り実装できたのですが

(function(){
"use strict";
var events = [
'app.record.create.change.顧客名', //環境のフィールドコードを記載
'app.record.edit.change.顧客名', //環境のフィールドコードを記載
'app.record.create.change.事業所', //環境のフィールドコードを記載
'app.record.edit.change.事業所', //環境のフィールドコードを記載
'app.record.create.change.住所', //環境のフィールドコードを記載
'app.record.edit.change.住所' //環境のフィールドコードを記載

];
kintone.events.on(events,function(event){
event.changes.field.value=event.changes.field.value.replace(/[A-Za-z0-9]/g,function(s){
return String.fromCharCode(s.charCodeAt(0)+65248);
}).replace(/[‐-―ー-]/g,'-');
return event;
});
})();

保存時の実装が上手くいきません。

何が原因でしょうか。

 

(function(){
"use strict";
var events = [
'app.record.create.submit.顧客名', //環境のフィールドコードを記載
'app.record.edit.submit.顧客名', //環境のフィールドコードを記載
'app.record.create.submit.事業所', //環境のフィールドコードを記載
'app.record.edit.submit.事業所', //環境のフィールドコードを記載
'app.record.create.submit.住所', //環境のフィールドコードを記載
'app.record.edit.submit.住所', //環境のフィールドコードを記載

];
kintone.events.on(events,function(event){
event.submit.field.value=event.submit.field.value.replace(/[A-Za-z0-9]/g,function(s){
return String.fromCharCode(s.charCodeAt(0)+65248);
}).replace(/[‐-―ー-]/g,'-');
return event;
});
})();

ADM 様

こんにちは。

app.record.create.submit と app.record.edit.submit の後ろのフィールドコードがまず必要ありません。

kintone JavaScript API(イベント)一覧 – cybozu developer network

kintone.events.on の第一引数は上記のフィールドコードが無いイベントタイプを2つ指定して頂ければ、保存時のイベントとして処理されると思います。

また、event.submit.field.value は存在しませんので event.records.顧客名.value 等で保存イベント時にフィールドを一つ一つチェックしていく必要があるかと思います。

ざっくりお伝えすると以上です。

回答いただきありがとうございます。

記載がそもそも違っていたんですね。

訂正し、実行してみたのですが動作しないようです。

(function(){
"use strict";
var events = [
'app.record.create.submit', //環境のフィールドコードを記載
'app.record.edit.submit' //環境のフィールドコードを記載

];
kintone.events.on('app.record.create.submit','app.record.edit.submit',function(event){
event.records.顧客名.value=event.records.顧客名.value.replace(/[A-Za-z0-9]/g,function(s){
return String.fromCharCode(s.charCodeAt(0)+65248);
}).replace(/[‐-―ー-]/g,'-');

event.records.事業所.value=event.records.事業所.value.replace(/[A-Za-z0-9]/g,function(s){
return String.fromCharCode(s.charCodeAt(0)+65248);
}).replace(/[‐-―ー-]/g,'-');

event.records.住所.value=event.records.住所.value.replace(/[A-Za-z0-9]/g,function(s){
return String.fromCharCode(s.charCodeAt(0)+65248);
}).replace(/[‐-―ー-]/g,'-');

return event;
});
})();

ADM様 横から失礼します。

event.records.事業所.value=event.records.事業所.value.replace(/[A-Za-z0-9]/g,function(s){

event.recordsからevent.recordに変更でいかがでしょうか。

ありがとうございます。

変更かけてみました、がうまくいかないようです・・・

なぜでしょうね

(function(){
"use strict";
var events = [
'app.record.create.submit', //環境のフィールドコードを記載
'app.record.edit.submit' //環境のフィールドコードを記載

];
kintone.events.on('app.record.create.submit','app.record.edit.submit',function(event){
event.record.顧客名.value=event.record.顧客名.value.replace(/[A-Za-z0-9]/g,function(s){
return String.fromCharCode(s.charCodeAt(0)+65248);
}).replace(/[‐-―ー-]/g,'-');

event.record.事業所.value=event.record.事業所.value.replace(/[A-Za-z0-9]/g,function(s){
return String.fromCharCode(s.charCodeAt(0)+65248);
}).replace(/[‐-―ー-]/g,'-');

event.record.住所.value=event.record.住所.value.replace(/[A-Za-z0-9]/g,function(s){
return String.fromCharCode(s.charCodeAt(0)+65248);
}).replace(/[‐-―ー-]/g,'-');

return event;
});
})();

ADM 様

こんにちは。

ishikawayuito 様が仰られた通り、record が正しいですね。

申し訳ございませんでした。

あと改善点は、kintone.events.on の第一引数は複数指定する場合は配列になります。

ですので

kintone.events.on('app.record.create.submit','app.record.edit.submit',function(event){ // この行ですが

kintone.events.on(['app.record.create.submit','app.record.edit.submit'],function(event){ // このようになります。

変更して動作を確認してみて下さい。

もしくは、せっかく配列用意されているので。

kintone.events.on(events,function(event){

このようにされても良いかと思います。

新屋様

ありがとうございます。

変更したところ下記のエラーが発生しました。

Uncaught TypeError: Cannot read properties of undefined (reading 'replace')
at download.do?app=24&contentId=597579&jsType=DESKTOP&hash=d6c7c56921ee4dc3a7c49fa1f11a81ed77c0f07c:13
at show.js:269
at new Jk (show.js:131)
at Dea (show.js:268)
at show.js:268
at e.o (show.js:133)
at Yk (show.js:135)
at Vk (show.js:135)
at Jk.K (show.js:1246)
at Ck (show.js:131)

配列でも同じ結果になってしまいました。

kintone.events.on(events,function(event){ の中を顧客名だけにすれば動きました。ただ、このファンクションを3つに分けて動かしてみたところたまに処理が走るものの、ほぼエラーで止まってしまいます。

どれか1つだとうまく動作します。

(function(){
"use strict";
var events = [
'app.record.create.submit', //環境のフィールドコードを記載
'app.record.edit.submit' //環境のフィールドコードを記載

];
kintone.events.on(events,function(event){
event.record.顧客名.value=event.record.顧客名.value.replace(/[A-Za-z0-9]/g,function(s){
return String.fromCharCode(s.charCodeAt(0)+65248);
}).replace(/[‐-―ー-]/g,'-');

event.record.事業所.value=event.record.事業所.value.replace(/[A-Za-z0-9]/g,function(s){
return String.fromCharCode(s.charCodeAt(0)+65248);
}).replace(/[‐-―ー-]/g,'-');

event.record.住所.value=event.record.住所.value.replace(/[A-Za-z0-9]/g,function(s){
return String.fromCharCode(s.charCodeAt(0)+65248);
}).replace(/[‐-―ー-]/g,'-');

return event;
});
})();

ADM 様

こんにちは。

エラーの件ですが、13行目なのでおそらく事業所に値が入っていなかったのではないでしょうか?

その場合は、replace を実行した場合に ご報告を頂いたようなエラーを出します。

回避方法としては対象のフィールドの値を if などで評価して実行をスキップさせるようにすると回避できるかと思います。

 

もしくは回避方法として、顧客名・事業所・住所 をフィールドの設定で必須にしてしまうと良いかもしれませんね。

新屋 様

まさにおっしゃる通りでした。

空欄を回避したら上手く動作するようになりました。

良かったです!ありがとうございます!