環境依存文字を入力出来ないようにしたい

他の連携サービスを用いた際に文字化けしてしまいます。

kintoneの入力時点で、環境依存文字を入力出来ないように(または変換)

することは可能でしょうか?

 

https://www.drk7.jp/MT/archives/001521.html

 

上記のように環境依存文字を定義し、置換するスクリプトをかき、

レコード保存時のイベントで置換するなりすればできそうです。

ご回答ありがとうございます。
まだカスタマイズを始めたばかりで
知識薄です。

(function() {
“use strict”;
以下、どの様に書けば反映できますか?

よろしくお願いします。

レコード保存時のイベントはリファレンスに詳細があります

https://developer.cybozu.io/hc/ja/articles/201941984#step2

具体的には下記のような形になります。

|

(function() {  
 "use strict";  
 kintone.events.on('app.record.create.submit',function(event) {
var record = event.record;
// ここに環境依存文字を置換するコードを書く
return event;
});
})();

|
|   |   |

 

チュートリアルもありますので是非ご参考に!

https://developer.cybozu.io/hc/ja/articles/360024370392

下記で合っていますでしょうか?

(function() {
“use strict”;
kintone.events.on(‘app.record.create.submit’, function (event) {
var record = event.record;
// 機種依存文字置換関数
function replace_Char(textid){
var text = textid.value;
var ngchr = [
‘①’,‘②’,‘③’,‘④’,‘⑤’,‘⑥’,‘⑦’,‘⑧’,‘⑨’,‘⑩’,‘⑪’,‘⑫’,‘⑬’,‘⑭’,‘⑮’,
‘⑯’,‘⑰’,‘⑱’,‘⑲’,‘⑳’,‘Ⅰ’,‘Ⅱ’,‘Ⅲ’,‘Ⅳ’,‘Ⅴ’,‘Ⅵ’,‘Ⅶ’,‘Ⅷ’,‘Ⅸ’,‘Ⅹ’,
‘㍉’,‘㌔’,‘㌢’,‘㍍’,‘㌘’,‘㌧’,‘㌃’,‘㌶’,‘㍑’,‘㍗’,‘㌍’,‘㌦’,‘㌣’,‘㌫’,‘㍊’,‘㌻’,
‘㎜’,‘㎝’,‘㎞’,‘㎎’,‘㎏’,‘㏄’,‘㎡’,‘㍻’,
‘〝’,‘〟’,‘№’,‘㏍’,‘℡’,‘㊤’,‘㊥’,‘㊦’,‘㊧’,‘㊨’,‘㈱’,‘㈲’,‘㈹’,‘㍾’,‘㍽’,‘㍼’,
];
var trnchr = [
‘(1)’,‘(2)’,‘(3)’,‘(4)’,‘(5)’,‘(6)’,‘(7)’,‘(8)’,‘(9)’,‘(10)’,‘(11)’,‘(12)’,‘(13)’,‘(14)’,‘(15)’,
‘(16)’,‘(17)’,‘(18)’,‘(19)’,‘(20)’,‘I’,‘II’,‘III’,‘IV’,‘V’,‘VI’,‘VII’,‘VIII’,‘IX’,‘X’,
‘ミリ’,‘キロ’,‘センチ’,‘メートル’,‘グラム’,‘トン’,‘アール’,‘ヘクタール’,‘リットル’,‘ワット’,‘カロリー’,‘ドル’,‘セント’,‘パーセント’,‘ミリバール’,‘ページ’,
‘mm’,‘cm’,‘km’,‘mg’,‘kg’,‘cc’,‘平方メートル’,‘平成’,
‘「’,‘」’,‘No.’,‘K.K.’,‘TEL’,‘(上)’,‘(中)’,‘(下)’,‘(左)’,‘(右)’,‘(株)’,‘(有)’,‘(代)’,‘明治’,‘大正’,‘昭和’,
];
for(var i=0; i<=ngchr.length;i++){
text = text.replace( ngchr[i], trnchr[i], ‘mg’ );
}
textid.value = text;
}

// 機種依存文字チェック関数
return event;
});
})();

replace_Char関数ですが使い勝手のために多少書き直しました。

また、どのフィールドコードを置換したいかはなかったので、ここではtextフィールドtext2フィールドを書き換えるコードを示します。

 

(function() {
"use strict";
function replace_Char(text){
var ngchr = [
'①','②','③','④','⑤','⑥','⑦','⑧','⑨','⑩','⑪','⑫','⑬','⑭','⑮',
'⑯','⑰','⑱','⑲','⑳','Ⅰ','Ⅱ','Ⅲ','Ⅳ','Ⅴ','Ⅵ','Ⅶ','Ⅷ','Ⅸ','Ⅹ',
'㍉','㌔','㌢','㍍','㌘','㌧','㌃','㌶','㍑','㍗','㌍','㌦','㌣','㌫','㍊','㌻',
'㎜','㎝','㎞','㎎','㎏','㏄','㎡','㍻',
'〝','〟','№','㏍','℡','㊤','㊥','㊦','㊧','㊨','㈱','㈲','㈹','㍾','㍽','㍼',
];
var trnchr = [
'(1)','(2)','(3)','(4)','(5)','(6)','(7)','(8)','(9)','(10)','(11)','(12)','(13)','(14)','(15)',
'(16)','(17)','(18)','(19)','(20)','I','II','III','IV','V','VI','VII','VIII','IX','X',
'ミリ','キロ','センチ','メートル','グラム','トン','アール','ヘクタール','リットル','ワット','カロリー','ドル','セント','パーセント','ミリバール','ページ',
'mm','cm','km','mg','kg','cc','平方メートル','平成',
'「','」','No.','K.K.','TEL','(上)','(中)','(下)','(左)','(右)','(株)','(有)','(代)','明治','大正','昭和',
];
for(var i=0; i<=ngchr.length;i++){
text = text.replace( ngchr[i], trnchr[i], 'mg' );
}
return text;
}


kintone.events.on('app.record.create.submit',function (event) {
varrecord = event.record;

// 置換したいテキストフィールドは textとtext2 とする
// replace_Charに任意の文字列を渡すことで、機種依存文字が変換されて返ってくる
record.text = replace_Char(record.text);
record.text2 = replace_Char(record.text2); // 対象のフィールドにそれぞれreplace_Charする

returnevent;
});
})();

ありがとうございます。

何度も質問で申し訳ありませんが、教えてください。

「番地」「支店名」フィールドに環境依存文字が入力された際に

変換をさせたいです。下記で合っていますか?

実装してみましたが、変換されない状態です。

// 置換したいテキストフィールドは textとtext2 とする // replace_Charに任意の文字列を渡すことで、機種依存文字が変換されて返ってくる record.番地 = replace_Char(record.番地); record.支店名 = replace_Char(record.支店名); // 対象のフィールドにそれぞれreplace_Charする

 

すいません、提示したコードがちょっと間違ってますね

 

record.フィールドコード.value

 

という風にするのが正しいので

record.番地.value = replace_Char(record.番地.value);

 

という感じでためしてみてください〜

ありがとうございます。

変更してみました。下記で合っていますか? 変換は出来ない状態です。

(function() {
“use strict”;
function replace_Char(text){
var ngchr = [
‘①’,‘②’,‘③’,‘④’,‘⑤’,‘⑥’,‘⑦’,‘⑧’,‘⑨’,‘⑩’,‘⑪’,‘⑫’,‘⑬’,‘⑭’,‘⑮’,
‘⑯’,‘⑰’,‘⑱’,‘⑲’,‘⑳’,‘Ⅰ’,‘Ⅱ’,‘Ⅲ’,‘Ⅳ’,‘Ⅴ’,‘Ⅵ’,‘Ⅶ’,‘Ⅷ’,‘Ⅸ’,‘Ⅹ’,
‘㍉’,‘㌔’,‘㌢’,‘㍍’,‘㌘’,‘㌧’,‘㌃’,‘㌶’,‘㍑’,‘㍗’,‘㌍’,‘㌦’,‘㌣’,‘㌫’,‘㍊’,‘㌻’,
‘㎜’,‘㎝’,‘㎞’,‘㎎’,‘㎏’,‘㏄’,‘㎡’,‘㍻’,
‘〝’,‘〟’,‘№’,‘㏍’,‘℡’,‘㊤’,‘㊥’,‘㊦’,‘㊧’,‘㊨’,‘㈱’,‘㈲’,‘㈹’,‘㍾’,‘㍽’,‘㍼’,
];
var trnchr = [
‘(1)’,‘(2)’,‘(3)’,‘(4)’,‘(5)’,‘(6)’,‘(7)’,‘(8)’,‘(9)’,‘(10)’,‘(11)’,‘(12)’,‘(13)’,‘(14)’,‘(15)’,
‘(16)’,‘(17)’,‘(18)’,‘(19)’,‘(20)’,‘I’,‘II’,‘III’,‘IV’,‘V’,‘VI’,‘VII’,‘VIII’,‘IX’,‘X’,
‘ミリ’,‘キロ’,‘センチ’,‘メートル’,‘グラム’,‘トン’,‘アール’,‘ヘクタール’,‘リットル’,‘ワット’,‘カロリー’,‘ドル’,‘セント’,‘パーセント’,‘ミリバール’,‘ページ’,
‘mm’,‘cm’,‘km’,‘mg’,‘kg’,‘cc’,‘平方メートル’,‘平成’,
‘「’,‘」’,‘No.’,‘K.K.’,‘TEL’,‘(上)’,‘(中)’,‘(下)’,‘(左)’,‘(右)’,‘(株)’,‘(有)’,‘(代)’,‘明治’,‘大正’,‘昭和’,
];
for(var i=0; i<=ngchr.length;i++){
text = text.replace( ngchr[i], trnchr[i], ‘mg’ );
}
return text;
}

kintone.events.on(‘app.record.create.submit’, function (event) {
var record = event.record;

// 置換したいテキストフィールドは textとtext2 とする
// replace_Charに任意の文字列を渡すことで、機種依存文字が変換されて返ってくる
record.番地.value = replace_Char(record.番地.value);
record.支店名.value = replace_Char(record.支店名.value); // 対象のフィールドにそれぞれreplace_Charする

return event;
});
})();

あれから、試行錯誤の後 正常に動作しました。

ありがとうございました!

なかなか返信できずすいません。正常に動作できたならよかったです!!

このトピックはベストアンサーに選ばれた返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。