値のコピーについて

お世話になっております。

タイトルの件について、チェックボックスにチェックされた値を文字列に「,」区切りでコピーしたいと考えております。

現在、下記コードで行っていますが、

(function () {
    "use strict";
    var events = [
        'app.record.detail.show',
        'app.record.create.show',
        'app.record.edit.show',
        'app.record.create.change.項目1',
        'app.record.edit.change.項目1',
        'app.record.create.change.項目2',
        'app.record.edit.change.項目2',
        'app.record.create.change.項目3',
        'app.record.edit.change.項目3'
    ];
    kintone.events.on(events, function(event) {
        kintone.app.record.setFieldShown('項目', true);
        var record = event.record;
        var val1 = record['項目1']['value'] + ',' || '';
        var val2 = record['項目2']['value'] + ',' || '';
        var val3 = record['項目3']['value'] + ',' || '';
        record['項目']['value'] = val1 + val2 + val3;
        return event;
    });
})();

チェックが付いていない場合も「,」が表示されてしまいます。

項目1.2.3がチェックされている場合は項目1,項目2,項目3,

項目が全てチェックされていない場合は空白としたいです。(※現在「,」と表示されます)

お手数でございますが、ご教授いただければ幸いでございます。

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

 

 

意図通りの動きを実現させる前に、2つ気になるポイントが幾つかあります。

・detail.showは値の変更に寄与しないので、恐らくこの内容での指定は意味をなしません。

・項目1-3はチェックボックスであればvalueは配列であることを意識する必要があります。record[‘項目1’][‘value’] + ‘,’ || ‘’ の記述の前半の演算子「+」が(「||」より)先に動き、この際に配列が「,」と結合することで文字列化されていることは意識されていますか?

 

本題の実現は幾つも書き方があると思いますが、配列を使ったスッキリな書き方を書いてみます。恐らくご所望の動きはこんな感じかと。

文字通り配列で使えるメソッドがポイントですが、調べて昇華してみてください。

var fields= ['項目1', '項目2', '項目3'];
var events = [
'app.record.create.show',
'app.record.edit.show',
'app.record.create.change.項目1',
'app.record.edit.change.項目1',
'app.record.create.change.項目2',
'app.record.edit.change.項目2',
'app.record.create.change.項目3',
'app.record.edit.change.項目3'
];

kintone.events.on(events, function(event) {
var record=event.record;
var text=fields.filter(function(field){
return record[field].value.length === 1;
}).map(function(field){
return record[field].value[0];
}).join(', ');
record['項目']['value'] =text;
returnevent;
});

Ryu Yamashita様

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

ご教授いただいたように設定し、設定ができました。ありがとうございます。

また、detail.showや配列を使用した書き方等、詳しくご教授いただきありがとうございます。

かなりコードがスッキリ致しました。

自分の環境にあった設定、コードの書き方等を調べて昇華したいと思います。

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