新規投稿
フォローする

チェックボックスの判定で、フィールドAからフィールドBへ転記

ちょっと複雑?っぽいので、長くなります。

タイトル行だけでは書ききれませんでしたが、

チェックボックスにチェックが入っていれば、

フィールドAからフィールドBに転記。

入っていなければ、フィールドBは数値0というコードを書きたいです。

アプリの状況と、書いているコードは以下の通りです。

現状は、フィールドBの項目が何も変化せず、転記もされず、0も入りません。

上図のうち、③まで実装完了しています。

④の転記orチェック無しは0が実装できません。何も変化せず空白フィールドのままです。

★まずはチェックボックスを変更すると、計算用フィールドの値を、物件マスタのNoフィールドに転記するコードです。こちらは問題なく動いているハズ・・・計算用フィールドには「物件名」のルックアップで持ってきています。

(function() {
"use strict";

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

//'app.record.create.submit',
//'app.record.edit.submit',
//'app.record.inedx.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 += '\n' + resp.message;
alert(errmsg);
}
}
);
}, function (resp) {
var errmsg = 'An error occurred while getting records.';
if (resp.message !== undefined) {
errmsg += '\n' + resp.message;
alert(errmsg);
}


});
});
})();

★次に④の、計算用からNoフィールドに転記するためのコードです

(function() {
'use strict';
kintone.events.on([

'app.record.create.show',
'app.record.create.submit',

'app.record.index.show',
'app.record.index.edit.show',
'app.record.index.edit.submit',

'app.record.edit.show',
'app.record.edit.submit',

'app.record.create.change.物件名',
'app.record.edit.change.物件名',
'app.record.index.edit.change.物件名',

'app.record.create.change.反響者',
'app.record.edit.change.反響者',
'app.record.index.edit.change.反響者',

], function(event) {
var record = event.record;

record['反響No'].disabled = false;
record['来場No'].disabled = false;
record['契約No'].disabled = false;
record['反響No計算用'].disabled = false;
record['来場No計算用'].disabled = false;
record['契約No計算用'].disabled = false;

if(record['反響者'].value == []){
record['反響No'].value = 0;
} else {
record['反響No'].value = record['反響No計算用'].value;
}

return event;

});
})();

 

ifで分岐すればOKと簡単そうに思えるんですが、うまくいきません・・・

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

0

2件のコメント

Avatar
Shotaro Matsuda

森川さん、こんにちは。プロジェクト・アスノートの松田です。

IF文の条件式で、record['反響者'].value == [] と記載されています。

チェックボックスのチェックを外すときは、[]を代入すればOKなんですが、

チェックの有無の判定だと、record['反響者'].value == [] はfalseになってしまいます。

私はいつも、値の有無をindexOfで判定するか、配列の長さを利用するようにしています。

record.チェックボックス.value.length == 0;

Shotaro Matsudaにより編集されました
0
Avatar
森川

すみません、年末年始もあり確認が遅くなりました・・・

この投稿したあとに検索していたら、APIで別アプリのフィールド情報取得?の内容があり、

物件ごとに数字を持たせて、チェックを入れたら呼び出し&+1して数字フィールドに保管

自動採番か何かの記事を見たと思います

間違ってチェックしちゃったとか、チェック連打したとかの場合に不具合は出ますが、

ひとまずそんな形で運用しています!

ご回答ありがとうございました。他のケースでも使えるよう熟読させていただきます!

0
サインインしてコメントを残してください。