サブテーブルの降順で並べ替えし、尚且つ最後の書き込みを上のメモ欄に上書きコピー出来ないか

活動履歴の最新を上段に持ってきて、尚且つメモ欄(フィールド)に最新を上書きコピーする方法はありますか?

「活動日降順」に並べ、最新の活動日の「情報」を「メモ」にコピーしたいということでしょうか?サブテーブルは配列なので、配列のsortを使用すれば可能です(同じ日付同士で更に最新を比較させるのであれば別の処理が必要です)。

その上で1行目の内容をメモにコピーすれば実装できるかと思います。

(() => {
    'use strict';

    let subTable = 'テーブル'; // サブテーブルのフィールドコード
    let date = '活動日'; // サブテーブル内「活動日」のフィールドコード
    let information = '情報'; // サブテーブル内「情報」のフィールドコード
    let memo = 'メモ'; // メモのフィールドコード

    kintone.events.on([
        'app.record.create.submit', 'app.record.edit.submit'
    ], (event) => {
        let record = event.record;

        record[subTable].value = record[subTable].value.sort((a, b) => a.value[date].value > b.value[date].value ? -1: 1);
        record[memo].value = record[subTable].value[0].value[information].value;

        return event;
    });
})();
1 Like

返事が遅れてすいません。ありがとうございました。

上手く行きそうですm(_ _)m

更に質問があり申し訳ございません。

コピー項目を追加して行いましたが、ユーザー項目(入力者)

コードで追加したところ、日付はコピー出来るのですが、ユーザー項目(入力者)→文字列(活動履歴入力者)にコピーしようとすると[object Object]となってしまいます。

何か良い方法はありますでしょうか?

コードは下記の通りです。

(() => {

    ‘use strict’;

    let subTable = ‘活動履歴’; // サブテーブルのフィールドコード

    let date = ‘日付’; // サブテーブル内「活動日」のフィールドコード

    let information = ‘情報’; // サブテーブル内「情報」のフィールドコード

    let name = ‘入力者’;//サブテーブル内「入力者」のフィールドコード

    let memo = ‘営業メモ’; // メモのフィールドコード

    let date1 = ‘営業更新日’;// メモ更新日

    let name1 = ‘活動履歴入力者’;//活動履歴入力者

    kintone.events.on([

        ‘app.record.create.submit’, ‘app.record.edit.submit’

    ], (event) => {

        let record = event.record;

        record[subTable].value = record[subTable].value.sort((a, b) => a.value[date].value > b.value[date].value ? -1: 1);

        record[memo].value = record[subTable].value[0].value[information].value;

        record[date1].value = record[subTable].value[0].value[date].value;

        record[name1].value = record[subTable].value[0].value[name].value;

        return event;

    });

})();

 

muto さま

ユーザー選択フィールドはname、codeのkeyを持つオブジェクトが格納された配列なので、それに合わせた指定が必要です(それぞれの意味はお調べ下さい)。

        record[name1].value = record[subTable].value[0].value[name].value;

      record[name1].value = record[subTable].value[0].value[name].value[0].name;

(ユーザー選択フィールドの1番上のユーザー名を表示する場合)

        record[name1].value = record[subTable].value[0].value[name].value.map(user => user.name).join(' ');

(ユーザー選択フィールドで選択されている全員のユーザー名を表示する場合)

mis-hashimoto様

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

配列で指定ですね。いつも簡単なところで悩んでしまい大変助かりました(_ _)

このトピックはベストアンサーに選ばれた返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。