i4087
1
お世話になっております。
標記の件について、過去ログを漁ってみたのですが、該当しそうな投稿が見つからず、新しいトピックで失礼します。
kintoneレコードに対してバーコードリーダーで読み込んだ際、10桁の数字を拾います。
ただ、この10桁の数字を強制で9桁(削るのは最後の1桁)にしたいです。
なおこの数字はルックアップフィールドに入ります。
またさらに強制半角にできたら、なお最高なのですが。(こちらは最悪手動選択できるので、出来たら…レベルです)
javascript,css問わないのですが、こちら実現可能でしょうか…。
恐縮ですが、宜しくお願いします。
tanemaki
(たねまき)
2
末尾1文字を削るのも半角変換もJavaScriptで実現可能です。
但し、ルックアップフィールドは値変更イベントを検知できないので、別途バーコード貼り付け用の文字列フィールドを用意し、それの値変更イベントで文字列を整形してからルックアップフィールドにコピーするのが良いと思います。
【末尾1文字を削除】
JavaScriptにはslice()メソッドというものがあり、こちらを使用することで文字列の一部の切り出しが可能です。
【半角変換】
こちらは正規表現の知識が必要で少し難しいですが、以下のサイトにコーディング例がありますので参考にしてみてください。
「いいね!」 1
i4087
3
ご教示頂き、ありがとうございます!
但し、ルックアップフィールドは値変更イベントを検知できないので、別途バーコード貼り付け用の文字列フィールドを用意し、それの値変更イベントで文字列を整形してからルックアップフィールドにコピーするのが良いと思います。
やっぱりルックアップフィールドだと制限があるんですね…。
文字列からルックアップに自動反映(コピー?)することもできるんでしょうか?
それともやはり手動コピペしかないでしょうか…。
tanemaki
(たねまき)
5
event.record['lookup'].value = event.record['string'].value;
このように記述することで、文字列(上記のstring)からルックアップ(上記のlookup)へ値をコピーすることができます。
※string及びlookupはフィールドコードの例なのでご自身のアプリの設定に合わせて変更してください
これだけではルックアップの取得ボタンを押した扱いにはならないので、自動で取得ボタンを押すようにされたい場合はもみじ様が貼ってくださっているリンクをご覧ください。
「いいね!」 1
i4087
6
もみじ様、たねまき様
アドバイスありがとうございます。
まずは自動反映(コピー)できるように色々試行錯誤してみてるんですが、
'app.record.edit.show’イベントだと希望のタイミングではないので、
'app.record.create.change.'イベントで実現してみたいんですが、
ルックアップは非対応なのでしょうか。
お恥ずかしながらですが、とりあえず作成してみたコード下記させて頂きます。
kintone.events.on('app.record.edit.change',(event) => {
const record = event.record;
record['number_choise'].value = record['test'].value; // ルックアップフィールドの値
record['number_choise'].lookup = true; // またはrecord['ルックアップ_0'].lookup = 'UPDATE';
return event;
});
[‘number_choise’]→ルックアップフィールド
[‘test’]→文字列1列フィールド
です。
i4087
8
フィールドコード漏れてました汗
こちらの自動反映は出来ました、ありがとうございます!!
i4087
9
次に先頭から9文字を切り出す機能を追加するために、
下記のようにコードを入れてみたのですが、
自動反映含めて止まってしまいました。
そもそもの構文がおかしいのか、
変数指定がうまくいってないのでしょうか・・・?
kintone.events.on('app.record.create.change.test',(event) => {
const str = record['test'].value;
console.log(str.slice(0,9));// 先頭から9文字切り出し
const record = event.record;
record['number_choise'].value = record['test'].value; // ルックアップフィールドの値
record['number_choise'].lookup = true; // またはrecord['ルックアップ_0'].lookup = 'UPDATE';
return event;
});
puppet
10
4行目での
const record = event.record;
の前に2行目でいきなり
const str = record['test'].value;
しちゃってるので、recordオブジェクトが無いよってエラーかなと
「いいね!」 2
i4087
12
たぶんpupeet様のコメントがjs初心者故に理解できていないのが問題だと思っているのですが、constには順番や決まった法則があるのでしょうか?汗(おそらくとんでもなく知識不足なお恥ずかしい質問をしていると思います、すいません。)
(そもそもconstって何をしているのかというのを勉強するために、「変数宣言をconst / letにして安全に初期化する」は読んでみました。)
なおもみじ様からのアドバイスもふまえ、
一旦下記コードに修正してみたのですが、案の定(?)動作していません。
kintone.events.on('app.record.create.change.test',(event) => {
const slicedStr = str.slice(0, 9);// 先頭から9文字切り出し
const record = event.record;
record['number_choise'].value = slicedStr;
record['number_choise'].value = record['test'].value; // ルックアップフィールドの値
record['number_choise'].lookup = true; // またはrecord['ルックアップ_0'].lookup = 'UPDATE';
return event;
});
i4087
14
もみじ様
とてもよく理解できました!!
ありがとうございます。
またpuppet様、たねまき様もありがとうございました。
重ねて御礼申し上げます。
半角全角は自力でやってみようと思います。
また何かございましたら、どうぞ宜しくお願いします。
「いいね!」 1
system
(system)
クローズされました:
15
このトピックはベストアンサーに選ばれた返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。