初めてのプログラミングです。表示/非表示設定について。

超初心者です。初めてのプログラミングを書きました。

該当のチェックボックスフィールドの選択肢(A or  B)によって、非表示フィールドの内容を変更しようと思い、以下を作成しました。

ですが片方のみしか動作しません。

何が原因かご教示いただけますと大変助かります。

またもっとスマートな書き方があれば併せてご教示ください。

 

(function() {
“use strict”;

kintone.events.on([
‘app.record.create.show’,
‘app.record.create.change.チェックボックス’,
‘app.record.detail.show’,
‘app.record.edit.show’,
‘app.record.edit.change.チェックボックス’,

] , function(event){
if(event.record[‘チェックボックス’][‘value’] === ‘A’) {
kintone.app.record.setFieldShown(‘その他フィールド1’, false);
kintone.app.record.setFieldShown(‘その他フィールド2’, false);
kintone.app.record.setFieldShown(‘その他フィールド3’, false);

} else {
kintone.app.record.setFieldShown(‘その他フィールド1’, true);
kintone.app.record.setFieldShown(‘その他フィールド2’, true);
kintone.app.record.setFieldShown(‘その他フィールド3’, true);

}
return event;
});

//以下のイベント発生時と該当フィールドは上記と同様で、valueと非表示にしたいフィールドが異なります。
kintone.events.on([
‘app.record.create.show’,
‘app.record.create.change.チェックボックス’,
‘app.record.detail.show’,
‘app.record.edit.show’,
‘app.record.edit.change.チェックボックス’,

] , function(event){
if(event.record[‘チェックボックス’][‘value’] === ‘B’) {
kintone.app.record.setFieldShown(‘その他フィールド1’, false);
kintone.app.record.setFieldShown(‘その他フィールド4’, false);
kintone.app.record.setFieldShown(‘その他フィールド5’, false);

} else {
kintone.app.record.setFieldShown(‘その他フィールド1’, true);
kintone.app.record.setFieldShown(‘その他フィールド4’, true);
kintone.app.record.setFieldShown(‘その他フィールド5’, true);

}
return event;
});

})();

超超初歩でお恥ずかしいですがよろしくお願いいたします。

 

宮城さん、こんにちは。プロジェクト・アスノートの松田です。

フィールドのデータを扱う際は、まずはフィールドのデータ形式をきちんと把握する必要があります。

チェックボックスフィールドのフィールド形式を再度チェックしてみてください。

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

 

このようなエラーを見つける方法は、以下のページを参考にしてみてください。

途中過程で、変数やオブジェクトの書き換え等が想定通りになっているか?を確認していくと見つけることができます。

https://developer.cybozu.io/hc/ja/articles/207613916-%E5%8B%95%E3%81%8B%E3%81%AA%E3%81%84-%E3%81%9D%E3%82%93%E3%81%AA%E6%99%82%E3%81%AF%E3%83%87%E3%83%90%E3%83%83%E3%82%B0%E3%82%92%E3%81%97%E3%81%A6%E3%81%BF%E3%82%88%E3%81%86-%E5%85%A5%E9%96%80%E7%B7%A8

プロジェクト・アスノート

松田様

早速のご返信ありがとうございます。

まさかの神からの返信に消沈した気分が浮上しました。

ドシキンカスドリルも毎夜拝聴し勉強させていただいております。

 

データ形式について、書き方が分かりずらく申し訳ありません。

フィールドコードはチェックボックスで、データ形式がラジオボタンを想定しております。

URLも早速拝見し、初デバックを行ってみました。

単体ではどちらも動作するのですが組み合わせると動きません。

どうやら同じ処理を2重行う内容になっていたようでしたので、試しにelse if で条件分岐してみたところ無事に動作しました!

 

この度はありがとうございます。

今後も不明点たくさん出てくるかと思われますので、もしまた投稿した際はよろしくお願い申し上げます。

YouTube活用ありがとうございます!

私もkintoneカスタマイズからプログラミングをやり始めましたが、

JavaScriptを覚えて書くこと自体よりも、デバッグの方法を覚えたことが一番大きかったと思います。

想定通りに動いたとのことで安心しました。

スマートな書き方については、いろいろ手法はあると思いますので、追って覚えていけばいいと思います。

まずは、基本的なロジックをきちんと考えて、それを表現するというやり方で問題ないと思います。

 

松田様

 

恐れ入ります。

再度ご教授ください。

上記のとおり、else ifの条件分岐で動作したかと思われたのですが、一部動作不良が起きておりまして対処方法が分かりません。

データ形式:ラジオボタン

フィールドコード:ラジオボタン

選択肢:3つあり、‘A’ ‘B’ ‘C’ です。画面上ではデフォルトで A を設定してあります。

不良動作:それぞれの表示/非表示設定はきちんと動作するのですが、例えばCを選択したあとに、再度Bにボタンを変更した場合、Cの処理を引き継いでしまうようでBの設定が上手く反映されていません。

一旦Aにボタンを変更した後にBを再度選択してみるとBの設定がきちんと反映されるという具合です。

何が原因か分かりますでしょうか。

お忙しい中何度も申し訳ありません。

よろしくお願い申し上げます。

 

宮城

kintone.events.on([

      ‘app.record.create.change.ラジオボタン’,

      ‘app.record.edit.change.ラジオボタン’,

       

   ] , function(event){

       if(event.record[‘ラジオボタン’][‘value’] === ‘B’) {

                  

       } else if(event.record['ラジオボタン][‘value’] === ‘C’) {

 

       } else {        

 

       }

       return event;

         });

宮城さん
これでは処理内容が書かれていないので、どこが間違っているかわかりません。
質問をする時は必要な情報をもれなく書くようにしましょう。

ソースコードの全文があれば、何かわかるかもしれません。

が、まずは落ち着いて、想定通りの動きをしなかったケースで、コードの中のどのような条件分岐をしているのか。全てのパターンをカバーできているのか?を検証してみましょう。

処理前の状態
処理内容
処理後の状態

を整理して、漏れがないか確認してみましょう。

松田様

何度もご返信いただき恐縮です。
上記の件ですが、true処理が一部漏れているという初歩的なミスでした!
大変お騒がせいたしまして申し訳ありません。。

今回該当フィールド数が述べ200フィールド程に及び、選択肢別にそれぞれ表示非表示フィールドが異なるため、途中迷子になっておりました。
はい、処理前の状態、処理内容、処理後の状態をしっかり意識いたします。
ありがとうございました。