# ドロップダウンの選択により、数値の自動反映設定を行いたい

**URL:** https://community.cybozu.dev/t/topic/3062
**Category:** kintone 開発相談
**Created:** [2018 年 5 月 16 日午前 8:02 UTC](https://community.cybozu.dev/t/topic/3062 "2018-05-16T08:02:01Z")
**Posts on this page:** 5
**Page:** 1

<div class="post-metadata">

### Author: ![Legacy\_Account714](https://avatars.discourse-cdn.com/v4/letter/l/ce7236/32.png) [@Legacy\_Account714](https://community.cybozu.dev/u/Legacy_Account714)
#### Post date: [2018 年 5 月 16 日午前 8:02 UTC](https://community.cybozu.dev/t/topic/3062/1 "2018-05-16T08:02:01Z")

</div>

お世話になっております。初投稿でございますが、どうぞよろしくお願い致します。

項目として：

・月（ドロップダウン）：1月～12月

・営業時間（数値） ７Ｈ、８Ｈ、９Ｈ（この数字を使いまわしたい）

・明細：テーブルＡ、テーブルＢ，テーブルＣ

☆☆やりたい連携としては、該当の月を選んだら、該当の営業時間のみ表示され、さらに該当のテーブルのみが表示される動きをしたいです。①11月,12月,1月,6月は営業時間が９ＨでテーブルＣで登録する。②2月,3月,7月,9月,10月の営業時間が8ＨでテーブルBで登録する。③4月,5月,8月の営業時間が7ＨでテーブルAで登録する。

以下のようにちょっとは書いてみましたが、営業時間の（７、８、９）Hで自動反映設定できなくて、なにかアドバイスいただければ幸いです。どうぞよろしくお願い致します。

(function() {  
“use strict”;

//レコードの追加、編集、詳細画面で適用する  
var events = [‘app.record.detail.show’,  
‘app.record.create.show’,  
‘app.record.create.change.月’,  
‘app.record.edit.show’,  
‘app.record.edit.change.月’];

kintone.events.on(events, function(event) {

var record = event.record;  
var 営業時間 = record[‘営業時間’].value;  
var TableA = record[‘TableA’][‘value’];  
var TableB = record[‘TableB’][‘value’];  
var TableC = record[‘TableC’][‘value’];  
var past = record.月.value;

if (past === ‘11月’ || past ===‘12月’ || past ===‘1月’ || past ===‘6月’ ) {  
kintone.app.record.setFieldShown(‘営業時間’, true);  
kintone.app.record.setFieldShown(‘TableA’, true);  
kintone.app.record.setFieldShown(‘TableB’, false);  
kintone.app.record.setFieldShown(‘TableC’, false);  
record[‘TableB’][‘value’] =[] ;//非表示の時にvalueを空にする  
record[‘TableC’][‘value’] =[] ;//非表示の時にvalueを空にする  
} else if (past === ‘2月’ || past ===‘3月’ || past ===‘7月’ || past ===‘9月’ || past ===‘10月’ ) {  
kintone.app.record.setFieldShown(‘営業時間’, true);  
kintone.app.record.setFieldShown(‘TableA’, false);  
kintone.app.record.setFieldShown(‘TableB’, true);  
kintone.app.record.setFieldShown(‘TableC’, false);  
record[‘TableA’][‘value’] =[] ;//非表示の時にvalueを空にする  
record[‘TableC’][‘value’] =[] ;//非表示の時にvalueを空にする  
} else if (past === ‘4月’ || past ===‘5月’ || past ===‘8月’ ) {  
kintone.app.record.setFieldShown(‘営業時間’, true);  
kintone.app.record.setFieldShown(‘TableA’, false);  
kintone.app.record.setFieldShown(‘TableB’, false);  
kintone.app.record.setFieldShown(‘TableC’, true);  
record[‘TableA’][‘value’] =[] ;//非表示の時にvalueを空にする  
record[‘TableB’][‘value’] =[] ;//非表示の時にvalueを空にする  
}else {  
kintone.app.record.setFieldShown(‘営業時間’, false);  
kintone.app.record.setFieldShown(‘TableA’, false);  
kintone.app.record.setFieldShown(‘TableB’, false);  
kintone.app.record.setFieldShown(‘TableC’, false);  
record[‘TableA’][‘value’] =[] ;//非表示の時にvalueを空にする  
record[‘TableB’][‘value’] =[] ;//非表示の時にvalueを空にする  
record[‘TableC’][‘value’] =[] ;//非表示の時にvalueを空にする  
record.営業時間.value =“” ;//非表示の時にvalueを空にする  
}

return event;

});  
})();

---

<div class="post-metadata">

### Author: ![Legacy\_Account1517](https://avatars.discourse-cdn.com/v4/letter/l/4bbf92/32.png) [@Legacy\_Account1517](https://community.cybozu.dev/u/Legacy_Account1517)
#### Post date: [2018 年 5 月 17 日午前 2:45 UTC](https://community.cybozu.dev/t/topic/3062/2 "2018-05-17T02:45:57Z")

</div>

サラさん

営業時間の（７、８、９）Hで自動反映設定は、数値を設定するだけです。

自動設定項目であれば、マニュアル入力できないようにしてはいかがですか？

あと show イベント内でテーブルの行数を 0 にしても、画面上は自動的に１行追加されます。

テーブルの行数を 0 にするには、submit イベント内でテーブルを設定します。

要件の詳細が分からないので、はたして TableA, TableB, TableC の構成が妥当なのか判断できませんが、

下記のようなコード例で対応出来ると思います。

&nbsp;

```
(function() {
"use strict";

//レコードの追加、編集、詳細画面で適用する
var events = ['app.record.detail.show',
'app.record.create.show',
'app.record.create.change.月',
'app.record.edit.show',
'app.record.edit.change.月'
];

kintone.events.on(events, function(event) {

var record = event.record;
// var 営業時間 = record['営業時間'].value;
// var TableA = record['TableA']['value'];
// var TableB = record['TableB']['value'];
// var TableC = record['TableC']['value'];
record['営業時間'].disabled = true;
var past = record.月.value;

if (past === '11月' || past === '12月' || past === '1月' || past === '6月') {
kintone.app.record.setFieldShown('営業時間', true);
kintone.app.record.setFieldShown('TableA', true);
kintone.app.record.setFieldShown('TableB', false);
kintone.app.record.setFieldShown('TableC', false);
record.営業時間.value = 9;
} else if (past === '2月' || past === '3月' || past === '7月' || past === '9月' || past === '10月') {
kintone.app.record.setFieldShown('営業時間', true);
kintone.app.record.setFieldShown('TableA', false);
kintone.app.record.setFieldShown('TableB', true);
kintone.app.record.setFieldShown('TableC', false);
record.営業時間.value = 8;
} else if (past === '4月' || past === '5月' || past === '8月') {
kintone.app.record.setFieldShown('営業時間', true);
kintone.app.record.setFieldShown('TableA', false);
kintone.app.record.setFieldShown('TableB', false);
kintone.app.record.setFieldShown('TableC', true);
record.営業時間.value = 7;
} else {
kintone.app.record.setFieldShown('営業時間', false);
kintone.app.record.setFieldShown('TableA', false);
kintone.app.record.setFieldShown('TableB', false);
kintone.app.record.setFieldShown('TableC', false);
record.営業時間.value = ""; //非表示の時にvalueを空にする
}
return event;
});

kintone.events.on(['app.record.create.submit','app.record.edit.submit'], function(event) {
var record = event.record;
var past = record.月.value;
if (past === '11月' || past === '12月' || past === '1月' || past === '6月') {
record['TableB']['value'] = []; //非表示の時にvalueを空にする
record['TableC']['value'] = []; //非表示の時にvalueを空にする
} else if (past === '2月' || past === '3月' || past === '7月' || past === '9月' || past === '10月') {
record['TableA']['value'] = []; //非表示の時にvalueを空にする
record['TableC']['value'] = []; //非表示の時にvalueを空にする
} else if (past === '4月' || past === '5月' || past === '8月') {
record['TableA']['value'] = []; //非表示の時にvalueを空にする
record['TableB']['value'] = []; //非表示の時にvalueを空にする
} else {
record['TableA']['value'] = []; //非表示の時にvalueを空にする
record['TableB']['value'] = []; //非表示の時にvalueを空にする
record['TableC']['value'] = []; //非表示の時にvalueを空にする
}
return event;
});

})();

```

---

<div class="post-metadata">

### Author: ![Legacy\_Account714](https://avatars.discourse-cdn.com/v4/letter/l/ce7236/32.png) [@Legacy\_Account714](https://community.cybozu.dev/u/Legacy_Account714)
#### Post date: [2018 年 5 月 17 日午前 5:09 UTC](https://community.cybozu.dev/t/topic/3062/3 "2018-05-17T05:09:40Z")

</div>

rex0220 様

お世話になっております。教えて頂いたコードでできました。（わいわい～）

showとsubmitの区別も初めて分かりました。本当にありがとうございました。

これからもどうぞよろしくお願い致します。

---

<div class="post-metadata">

### Author: ![Legacy\_Account1517](https://avatars.discourse-cdn.com/v4/letter/l/4bbf92/32.png) [@Legacy\_Account1517](https://community.cybozu.dev/u/Legacy_Account1517)
#### Post date: [2018 年 5 月 17 日午前 6:41 UTC](https://community.cybozu.dev/t/topic/3062/4 "2018-05-17T06:41:26Z")

</div>

試しに下記コードで実行してみてください。表示制御は外しています。

追加・編集画面上は、イベント処理でテーブルを０行にしても1行分表示されると思います。

これは、kintone の仕様だと思われます。もし編集画面で０行表示だと行追加もできません。

submit イベントでテーブルを０行にすると、レコード内のテーブルも０行になります。

&nbsp;

```
(function() {
"use strict";

//レコードの追加、編集、詳細画面で適用する
var events = ['app.record.detail.show',
'app.record.create.show',
'app.record.create.change.月',
'app.record.edit.show',
'app.record.edit.change.月'
];

kintone.events.on(events, function(event) {
var record = event.record;
record['TableA']['value'] = []; //非表示の時にvalueを空にする
record['TableB']['value'] = []; //非表示の時にvalueを空にする
record['TableC']['value'] = []; //非表示の時にvalueを空にする
return event;
});

kintone.events.on(['app.record.create.submit','app.record.edit.submit'], function(event) {
var record = event.record;
record['TableA']['value'] = []; //非表示の時にvalueを空にする
record['TableB']['value'] = []; //非表示の時にvalueを空にする
record['TableC']['value'] = []; //非表示の時にvalueを空にする
return event;
});

})();

```

---

<div class="post-metadata">

### Author: ![Legacy\_Account714](https://avatars.discourse-cdn.com/v4/letter/l/ce7236/32.png) [@Legacy\_Account714](https://community.cybozu.dev/u/Legacy_Account714)
#### Post date: [2018 年 5 月 17 日午前 6:47 UTC](https://community.cybozu.dev/t/topic/3062/5 "2018-05-17T06:47:06Z")

</div>

rex0220 様

お世話になっております。分かりやすくご説明までして頂、誠にありがとうございます。

showとsubmitの区別も初めて分かりました。本当にありがとうございました。

これからもどうぞよろしくお願い致します。
