背景・実現したいこと
LBY契約商材がプロバイダ 可変/保守を選択した時のみプロバイダ会社/プロバイダプランを表示するようにしたいのですが、下記ソースですと、選択しても表示されません。
どこを修正すればいいでしょうか?
エラー情報 (開発者ツールのコンソール)
利用したソースコード
(function() {
‘use strict’;
var events1 = [
‘app.record.create.show’,
‘app.record.create.change.LBY契約商材’,
‘app.record.edit.show’,
‘app.record.edit.change.LBY契約商材’,
‘app.record.detail.show’,
];
kintone.events.on(events1, function(event) {
kintone.app.record.setFieldShown(‘プロバイダ会社’, false);
kintone.app.record.setFieldShown(‘プロバイダプラン’, false);
var record = event.record[‘LBY契約商材’].value;
switch (record) {
case ‘プロバイダ 可変/保守’ :
kintone.app.record.setFieldShown(‘プロバイダ会社’, true);
kintone.app.record.setFieldShown(‘プロバイダプラン’, true);
break;
}
});
})();
var events1 = [
'app.record.create.show',
'app.record.create.change.LBY契約商材',
'app.record.edit.show',
'app.record.edit.change.LBY契約商材',
'app.record.detail.show',
];
// 略
var record = event.record['LBY契約商材'].value;
↓
var events1 = [
'app.record.create.change.LBY契約商材',
'app.record.edit.change.LBY契約商材',
];
// 略
var record = event.changes.row.value['LBY契約商材'].value;
サブテーブル上のフィールドはevent.record.フィールドコード.valueとは指定方法が異なります。サブテーブルは値が配列になるので、ループで処理をさせるか、event.changes.rowまたはevent.changes.fieldを使うと良いでしょう(参考 )。
ただし、これらはchangeイベントのみで使用できるものなので、showイベントでも同様に指定する場合はサブテーブルのループを回すか、find() 等を使うか、工夫が必要です。
回答ありがとうございます。
下記ソースに変更致しましたが、表示されません。
どこを修正すればいいでしょうか?
(function() {
‘use strict’;
var events1 = [
‘app.record.create.change.LBY契約商材’,
‘app.record.edit.change.LBY契約商材’,
];
kintone.events.on(events1, function(event) {
kintone.app.record.setFieldShown(‘プロバイダ会社’, false);
kintone.app.record.setFieldShown(‘プロバイダプラン’, false);
var record = event.changes.field.value[‘LBY契約商材’].value;
switch (record) {
case ‘プロバイダ 可変/保守’ :
kintone.app.record.setFieldShown(‘プロバイダ会社’, true);
kintone.app.record.setFieldShown(‘プロバイダプラン’, true);
break;
}
});
})();
唐木陽平 さま
var record = event.changes.field.value['LBY契約商材'].value;
↓
var record = event.changes.field.value;
この場合のfieldは変更したフィールドなので、フィールドコードは必要ありません。個人的にはevent.changes.row.value[‘LBY契約商材’].valueとすることをおすすめします。
もう一点追加ですが、
break;
}
});
↓
break;
}
return event;
});
イベントの終わりにはreturn eventをする癖をつけておくことを推奨します。このカスタマイズ自体には影響しない(仮にフィールドの中身を書き換えるようなカスタマイズの場合は必須)ものの、今後同じイベントを使った別のカスタマイズをした際に、そのカスタマイズが動作しなくなります。
break;
}
return event;
});
に変更した場合、一番上の
(function() {
にエラー Unmatched’ {'.
と出るのですが、どのように修正すればいいでしょうか?何度もすみません
唐木陽平 さま
括弧が正しく閉じられていないエラーですね。最終行の
})();
は残っていますか?
system
(system)
クローズされました:
2023 年 10 月 6 日午前 2:44
8
このトピックはベストアンサーに選ばれた返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。