こちらを参考に自動採番自体は出来るようになったんですが、
フィールドが複数になった場合が出来ません・・・。
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個)することで、
一応採番できるようにはなりました。
別のところで詰まったので、いったんこの質問は締めさせてもらいます。
ありがとうございました。