Javascript初心者です。
こちらのIF文がうまくいかないのですが、何が原因かわかりますか。
詳細画面を表示したときに、
「単位フィールド」(ドロップダウン)が “入力する” でない場合は「単位2フィールド」(文字列)を非表示にしたいです。
↓こちらです。
kintone.events.on(‘app.record.detail.show’, function(event){
if ( ‘単位’ not in (“入力する”) ) {
kintone.app.record.setFieldShown(‘単位2’, false);
}
return event;
});
ちなみにIF文を記載していない場合は普通に非表示になります。
kintone.events.on(‘app.record.detail.show’, function(event){
if ( ‘単位’ not in (“入力する”) ) {
kintone.app.record.setFieldShown(‘単位2’, false);
}
return event;
});
どなたか教えていただけますでしょうか。
よろしくお願いいたします。
以下のように設定して下さい。
kintone.events.on('app.record.detail.show', (event) => {
let record = event.record;
if (record['単位'].value != '入力する') {
kintone.app.record.setFieldShown('単位2', false);
}
return event;
});
ありがとうございます!!
解説お願いしても良いでしょうか?
ken さん
横から失礼します。
質問文の if 文の条件式(‘単位’ not in (“入力する”) の部分)はkintone のクエリの書き方を参考にされたのかなと思いました。
ここでの if 文の条件式は、Javascript の if 文の条件式の形にする必要があります。
まず、kintone のレコード情報は event オブジェクトの record プロパティに入っています。
record プロパティはオブジェクト形式をとっており、レコードオブジェクトと呼ばれます。
そのため、フィールドコードやフィールドの値などのレコードの情報を参照したいときは、レコードオブジェクトを参照する必要があります。
以下の記事が参考になるので読んでみてください。
・https://developer.cybozu.io/hc/ja/articles/360000903686
・https://developer.cybozu.io/hc/ja/articles/201941974#step1
let record = event.record;
上記のコードで event オブジェクト内のレコードオブジェクトを record という変数に入れています。
次に if 文の条件式部分(record[‘単位’].value != ‘入力する’)で「単位フィールド」(ドロップダウン)が “入力する” でない場合 を表しています。
!= は比較するものが等しくないことを表す演算子です。詳しくはこちらを参照してください。
その後はフィールド非表示の処理を記載し、最後に return event; することでレコードで書き換えた内容を保存する、という流れです。
もし kintone のカスタマイズを始めたばかりでしたら、このサイトのチュートリアルをやってみると理解が深まるかもしれません。
URL共有いたしますので、良かったら見てみてください!
https://developer.cybozu.io/hc/ja/articles/115002336526
ponyoさん、解説ありがとうございました!
ご紹介いただいたチュートリアルもやってみようと思います!