# チェックボックスで選んだ項目に対応した複数フィールドでの自動採番

**URL:** <https://community.cybozu.dev/t/topic/4696>\
**Category:** kintone 開発相談\
**Created:** [2019 年 12 月 4 日午前 9:45 UTC](https://community.cybozu.dev/t/topic/4696 "2019-12-04T09:45:54Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![Legacy\_Account1307](https://avatars.discourse-cdn.com/v4/letter/l/47e85d/32.png) [@Legacy\_Account1307](https://community.cybozu.dev/u/Legacy_Account1307)\
**Post date:** [2019 年 12 月 4 日午前 9:45 UTC](https://community.cybozu.dev/t/topic/4696/1 "2019-12-04T09:45:54Z")

</div>

こちらを参考に自動採番自体は出来るようになったんですが、

フィールドが複数になった場合が出来ません･･･。

[https://developer.cybozu.io/hc/ja/articles/203236240-%E9%A1%A7%E5%AE%A2%E3%81%94%E3%81%A8%E3%81%AE%E8%87%AA%E5%8B%95%E6%8E%A1%E7%95%AA](https://developer.cybozu.io/hc/ja/articles/203236240-%E9%A1%A7%E5%AE%A2%E3%81%94%E3%81%A8%E3%81%AE%E8%87%AA%E5%8B%95%E6%8E%A1%E7%95%AA)&nbsp;

雑に間にif噛ませて、条件分岐すればいけるかなと思ってたんですが、

どのタイミングで挟んでもJSeditで赤マークがついてしまいます。

(カッコが対応していないとかで･･･)

下記コードはまだ途中なのですが、全体の動きとしては、

チェックボックス：反響者，来場者，契約者

数値フィールド ：反響No、来場No、契約者No

があり、チェックボックスを入れた時に、対応するNoフィールドの番号が増える形です。

APIから取得？する際はif文の書き方が違うんでしょうか？

よろしくお願いいたします。

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

// Register the events.
kintone.events.on([

//'app.record.create.submit',
//'app.recprd.edit.submit'
'app.record.create.change.顧客区分',
'app.record.edit.change.顧客区分',
'app.record.index.edit.change.顧客区分'

], function(event) {
var app_code = "AppIdClient001"; // 顧客情報アプリのアプリコード

kintone.api(kintone.api.url('/k/v1/apps', true), 'GET', {"codes": [app_code]
}, function (resp) {
var app_id = resp.apps[0].appId;
var record = event.record;
var rec_id = record['顧客情報レコード番号'].value;
var seq = parseInt(record['反響No'].value) + 1;

// 案件連番更新リクエスト
kintone.api(kintone.api.url('/k/v1/record', true), 'PUT',
{
"app": app_id, "id": rec_id, "revision": -1, "record":{
"反響No" : { "value": seq }
}
}, function(resp) {
}, function(resp) {
var errmsg = 'An error occurred while updating records.';
if (resp.message !== undefined){
errmsg += '' + resp.message;
alert(errmsg);
}
}
);
}, function (resp) {
var errmsg = 'An error occurred while getting records.';
if (resp.message !== undefined) {
errmsg += '' + resp.message;
alert(errmsg);
}
});
});
})();

```

---

<div class="post-metadata">

**Author:** ![Legacy\_Account1896](https://avatars.discourse-cdn.com/v4/letter/l/f14d63/32.png) [@Legacy\_Account1896](https://community.cybozu.dev/u/Legacy_Account1896)\
**Post date:** [2019 年 12 月 5 日午前 1:46 UTC](https://community.cybozu.dev/t/topic/4696/2 "2019-12-05T01:46:52Z")

</div>

森川 さん

\> 下記コードはまだ途中なのですが、全体の動きとしては、  
\> チェックボックス：反響者，来場者，契約者  
\> 数値フィールド ：反響No、来場No、契約者No  
\> があり、チェックボックスを入れた時に、対応するNoフィールドの番号が増える形です。

あるフィールドの値が変更されたとき、特定のフィールドの値を変更する 場合、基本的にレコードの更新 API は不要かと思います。

該当の記事で言うと、案件連番の取得と編集を行うソースコード を参考に実装できると思います。

kintone のカスタマイズでは、どんな時にカスタマイズを動作させたいのか。というのがとても大事です。  
いつ -\> kintone イベントに置き換えることができるため。

今回だと、いつ -\> 反響者，来場者，契約者 の値が変更されたとき（チェックが入ったとき）となるので該当のイベントを  
[https://developer.cybozu.io/hc/ja/articles/360000361686](https://developer.cybozu.io/hc/ja/articles/360000361686) で探します。

サンプルコードである通り、 app.record.create.change と app.record.edit.change , app.record.index.change を使います。

app.record.create.change.反響者  
app.record.create.change.来場者  
app.record.create.change.契約者  
app.record.edit.change.反響者  
app.record.edit.change.来場者  
app.record.edit.change.契約者  
app.record.index.edit.change.反響者  
app.record.index.edit.change.来場者  
app.record.index.edit.change.契約者

まずはここまでで雛形のコードを作成します。

次は採番のロジックを実装する必要があります。

---

<div class="post-metadata">

**Author:** ![Legacy\_Account1307](https://avatars.discourse-cdn.com/v4/letter/l/47e85d/32.png) [@Legacy\_Account1307](https://community.cybozu.dev/u/Legacy_Account1307)\
**Post date:** [2019 年 12 月 5 日午前 4:08 UTC](https://community.cybozu.dev/t/topic/4696/3 "2019-12-05T04:08:36Z")

</div>

HANSA様

返信ありがとうございます！

チェックボックス書き方が悪くスミマセン･･･

チェックボックスの作りは、「顧客区分」という1つのフィールドに、[反響者、来場者、契約者]という選択肢を作成している状態です。

･･･が、言われている通り反響者~契約者を1個ずつフィールドで作って、それぞれをchangeイベントで制御したほうが分かりやすそうですね！

あと動きについてで、まだJavascript自体始めたばかりなので認識が違うのかもしれませんが、

該当の記事の「案件連番の取得と編集」のサンプルコードは、取得後の連番を文字列と合体させる内容かと思い、

練習アプリでも入れていません。

該当記事の「連番を更新するコード」で、連番(反響No)は付けられましたが、複数(来場No、契約No)になると実装できません。

詰まっている部分は、

・チェックを入れると採番→上のサンプルコードだとcreate時に親アプリから番号を取ってきてしまい、チェックボックスのchangeイベント時は動作せず、番号が増えていかない。

・来場Noと契約Noも同じような処理を行うために、if文でそれぞれチェックボックスがchangeしたときにサンプルコードを処理したい。

ifの書き場所がわからない状態です･･･書きながら思いましたがforかな･･･

&nbsp;

---

<div class="post-metadata">

**Author:** ![Legacy\_Account1307](https://avatars.discourse-cdn.com/v4/letter/l/47e85d/32.png) [@Legacy\_Account1307](https://community.cybozu.dev/u/Legacy_Account1307)\
**Post date:** [2019 年 12 月 11 日午前 8:05 UTC](https://community.cybozu.dev/t/topic/4696/4 "2019-12-11T08:05:06Z")

</div>

チェックボックスをそれぞれで作成(反響者、来場者、契約者)し、それぞれでjsファイルを作成(3個)することで、

一応採番できるようにはなりました。

別のところで詰まったので、いったんこの質問は締めさせてもらいます。

ありがとうございました。
