IF文がうまくいかないです

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さん、解説ありがとうございました!

ご紹介いただいたチュートリアルもやってみようと思います!