特定のフィールドに値が入ったタイミングで検索を行い、対象が見つからない場合はサブテーブル列を非表示にする方法

app.record.create.change.text_01

app.record.edit.change.text_01

 

上記2つのタイミングで、複数のフィールド(text_02, text_03, text_04)の値の中に文字列"ABC"があるかを検索する。

見つかった場合は処理なし。見つからなかった場合は、サブテーブル列「ABC」を

すべて非表示にするという仕組みを作りたいと考えているのですが、上手くいきません。

(サブテーブル列は複数あるため、すべての列にそれぞれ同じ条件処理を設定したいです)

 

kintone.app.record.setFieldShown(‘ABC’,false);

 

上記を用いれば、サブテーブル内の列でも非表示にすることは可能かと思うのですが、

「text_01」の値を変更しても、何も変化が起きない状況です。

 

駆け出しのため至らぬ点が多いかもしれませんが、有効な手段をご教授頂ければ幸いです。

情報が足りない場合は追加させて頂きます。何卒よろしくお願い致します。

Ryu(JS初級) さん

ソースコードを見ていないからなんとも言えないですが、

手元で試したところ、
changeイベントでテーブル内の特定なフィールドを非表示することができました。
手元で検証用のコードは次のとおりです。参考になれると嬉しいです。

kintone.events.on('app.record.edit.change.text1', function(event) {
    const text2 = event.record.text2.value; 
  if (text2 === "abc") {
      kintone.app.record.setFieldShown("abc",false)
    }
});

akika さん

お忙しいところ、ご教授ありがとうございます。

下記で試してみたのですが、自分の記述が間違っているのでしょうか。

レコード編集画面で「text_01」の値を変更しても、何も変化が起きないようです…。

ルックアップ機能によるデータ取得で「text_01」に値を入れているのが影響しているのでしょうか?

※「MyEvents」に発生タイミングを格納しております。

(()=>{
 'use strict';
 const MyEvents =[
  'app.record.edit.change.text_01',
  'app.record.create.change.text_01'
 ];

 kintone.events.on(MyEvents, function(event){
  const text2 = event.record.text_02.value;

  if(text2 === "abc"){
   kintone.app.record.setFieldShown("abc",false);
  }
 });
})();

akika さん

大変失礼致しました。

頂いたコードを参考に、何度か試してみましたところ、正常に動作しました。

残るは条件処理の部分(検索)をどう記述するかという点ですが、どうにか自力で

試行錯誤を繰り返してみたいと思います。

どうしても解決しない場合は、改めてご教授お願いするかもしれません。

その際は何卒よろしくお願いいたします。

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