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

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

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

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 

雑に間に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);
}
});
});
})();

森川 さん

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

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

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

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

今回だと、いつ -> 反響者,来場者,契約者 の値が変更されたとき(チェックが入ったとき)となるので該当のイベントを
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.契約者

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

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

HANSA様

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

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

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

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

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

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

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

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

詰まっている部分は、

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

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

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

 

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

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

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

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