プルダウンに連動して、チェックボックスの状態を変更

背景・実現したいこと

kintoneのアプリ上でワークフローを行いたく、「syonin_keiro」の値をプルダウンで選択し、チェックボックス「keiro_1」「keiro_2」を対応した状態に切り替えたい。

 

エラー情報 (開発者ツールのコンソール)

プルダウンの値を変更しても、チェックボックスの状態が画面上で切り替わりません。

エラー内容をブラウザのコンソール機能で確認しましたが、エラーは確認できず、原因の特定ができませんでした。

「kintone.app.record.get();」で、以下のフィールドコードが存在することを確認済みです。

  • keiro_1: {type: ‘CHECK_BOX’, value: Array(0)}
  • keiro_2: {type: ‘CHECK_BOX’, value: Array(0)}
  • sosiki_sentaku01: {type: ‘ORGANIZATION_SELECT’, value: Array(1)}
  • sosiki_sentaku02: {type: ‘ORGANIZATION_SELECT’, value: Array(1)}
  • syonin_keiro: {type: ‘DROP_DOWN’, value: undefined}
  • memo_1: {type: ‘SINGLE_LINE_TEXT’, value: undefined}
  • memo_2: {type: ‘SINGLE_LINE_TEXT’, value: undefined}

 

利用したソースコード

function onChangeSyoninKeiro(event) {
  const syonin_keiro = event.record['syonin_keiro'].value;
  const keiro_values = {
      'ルートA': [false, false],
      'ルートB': [true, false]
  };
  event.record['keiro_1'].value = keiro_values[syonin_keiro][0];
  event.record['keiro_2'].value = keiro_values[syonin_keiro][1];
  kintone.app.record.set(event.record);
}
kintone.events.on('app.record.detail.show', function(event) {
  kintone.events.on('change', 'syonin_keiro', onChangeSyoninKeiro);
});
    kintone.events.on('change', 'syonin_keiro', onChangeSyoninKeiro);

こういったイベントの設定方法はないので、使うのであればフィールドの値を変更したときのイベントを使用する必要があります。またdetail.showイベントの中で更にイベントを追加するのではなく、イベント単体で指定する必要があります。

また

    const keiro_values = {
        'ルートA': [false, false],
        'ルートB': [true, false]
    };
    event.record['keiro_1'].value = keiro_values[syonin_keiro][0];

ここも問題があるかと思います。恐らく2つ選択肢のあるチェックボックスの値を指定しようとしているのではないかと思いますが、チェックボックスの値を指定するのであればtrue/falseではなく選択肢の配列になるので、例えば「A」「B」「C」の選択肢があるチェックボックスの値を設定するのであれば[‘A’, ‘C’]や[‘C’]という指定方法になります(空白にしたいなら[])。

また

    kintone.app.record.set(event.record);

イベントハンドラ内でレコードに値をセットするは使えません。あくまでreturn eventで反映させる必要があります(また、仮に反映させるのであれば{record: {…}}というオブジェクトを指定する必要があるので、仮に指定できたとしてもエラーになります)。

また、恐らくそのまま作るとドロップダウンが何も選択されていない時(値がundefinedになります)にエラーになると思うので、if文等で値がある時だけ走るように変更する必要があるかとも思います。

 

kintoneのJavaScriptカスタマイズは一般的なJavaScriptカスタマイズとは少し違うので、一度チュートリアルから進めるのをおすすめします。

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