# レコード空更新で関連レコードの集計値を一覧画面で更新したい

**URL:** <https://community.cybozu.dev/t/topic/57>\
**Category:** kintone 開発相談\
**Created:** [2022 年 9 月 13 日午前 7:44 UTC](https://community.cybozu.dev/t/topic/57 "2022-09-13T07:44:30Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![Legacy\_Account2274](https://avatars.discourse-cdn.com/v4/letter/l/e19adc/32.png) [@Legacy\_Account2274](https://community.cybozu.dev/u/Legacy_Account2274)\
**Post date:** [2022 年 9 月 13 日午前 7:44 UTC](https://community.cybozu.dev/t/topic/57/1 "2022-09-13T07:44:30Z")

</div>

**背景・実現したいこと**

一覧画面に更新ボタンを設置し、関連レコード集計値（数値フィールド）を一覧画面で更新したいです。

①&nbsp;[こちらの記事](https://community.cybozu.dev/hc/ja/community/posts/360017851006/comments/360002846572)を拝見し、関連レコード集計値を数値フィールドに表示しました。

②[こちらの記事](https://community.cybozu.dev/hc/ja/community/posts/900001057226/comments/900000446243)を拝見し、更新ボタンを設置しました。

upbateボタンをクリックしても集計値の変更はされません。（各レコードの編集画面を開き、保存すると更新されます。）

修正点をご教授いただけますと幸いです。

**エラー情報** （開発者ツールのコンソール）

&nbsp;コンソールには表示されません。

**利用したソースコード**

①

ちなみに、レコード編集画面で該当の文字列フィールドの値から関連レコードが正しく表示されますが、集計は保存実行後でないとされません。

‘app.record.create.show’,&nbsp; &nbsp; ‘app.record.edit.show’,のイベント表記は働かないのでしょうか？

```
(function() {
  "use strict";
  kintone.events.on([
    'app.record.create.show',
    'app.record.edit.show',
    'app.record.create.submit',
    'app.record.edit.submit'
  ], function(event){
    return new kintone.Promise(function(resolve){
      RelatedRecordsFieldManager.prototype.getFieldProperties().then(function(){
        (new RelatedRecordsFieldManager('関連レコード')).getRecords(event.record).then(function(records){
          event.record.売上.value = records.reduce(function(sum, record){
          return sum + Number(record.会計売上.value);
          }, 0);
          resolve(event);
        });
      });
    });
  });
}());

```

&nbsp;②（参考記事から変更しておりません。）

```
(function() {
  "use strict";
  var getRecords = function(app, tmpRecords){
    var limit = 500;
    var tmpRecords = tmpRecords || [];
    return kintone.api(kintone.api.url('/k/v1/records', true), 'GET', {
      app: app,
      query: 'limit ' + limit +' offset ' + tmpRecords.length
    }).then(function(response){
      tmpRecords = tmpRecords.concat(response.records);
      return response.records.length === limit ? getRecords(app, tmpRecords) : tmpRecords;
    });
  }
  var putRecords = function(app, records){
    var limit = 100;
    return kintone.Promise.all(
      records.reduce(function(recordsBlocks, record){
        if(recordsBlocks[recordsBlocks.length - 1].length === limit){
          recordsBlocks.push([record]);
        }else{
          recordsBlocks[recordsBlocks.length - 1].push(record);
        }
        return recordsBlocks;
      }, [[]]).map(function(recordsBlock){
        return kintone.api(kintone.api.url('/k/v1/records', true), 'PUT', {
          app: app,
          records: recordsBlock
        });
      })
    );
  }
  kintone.events.on('app.record.index.show', function(event){
    if(document.getElementById('updateButton') !== null) return;
    var button = document.createElement('button');
    button.innerHTML = 'update';
    button.id = 'updateButton';
    kintone.app.getHeaderMenuSpaceElement().appendChild(button);
    button.addEventListener('click', function(){
      getRecords(kintone.app.getId()).then(function(records){
        putRecords(kintone.app.getId(), records.map(function(record){
          return {
            id: record.$id.value,
            record: {}
          };
        })).then(function(){
          alert('updated');
          location.reload();
        });
      });
    });
    return event;
  });
})();

```

---

<div class="post-metadata">

**Author:** ![Legacy\_Account2757](https://avatars.discourse-cdn.com/v4/letter/l/65b543/32.png) [@Legacy\_Account2757](https://community.cybozu.dev/u/Legacy_Account2757)\
**Post date:** [2022 年 9 月 13 日午前 8:39 UTC](https://community.cybozu.dev/t/topic/57/2 "2022-09-13T08:39:12Z")

</div>

ayoko様

コンソールには何もでてこない，とのことですが，②で

```
        })).then(function(){
          alert('updated');
          location.reload();
        });

```

これがあって，更新ができた場合は「updated」というメッセージがポップアップで表示されます．  
これはでてきますか？

また，前後しますが①で，

```
        (new RelatedRecordsFieldManager('関連レコード')).getRecords(event.record).then(function(records){

```

このコード内にgetRecordsがありますが，  
このコードがあるjsファイル内にgetRecordsがないと機能しないと思いますが，同じファイル内にありますか？  
コードではresolveしかないのでエラーになってもconsoleには表示されません．  
このあたりを確認ください．

---

<div class="post-metadata">

**Author:** ![Legacy\_Account2274](https://avatars.discourse-cdn.com/v4/letter/l/e19adc/32.png) [@Legacy\_Account2274](https://community.cybozu.dev/u/Legacy_Account2274)\
**Post date:** [2022 年 9 月 14 日午前 2:00 UTC](https://community.cybozu.dev/t/topic/57/3 "2022-09-14T02:00:48Z")

</div>

[TO](https://community.cybozu.dev/hc/ja/profiles/902343704226-TO) 様

コメントありがとうございます。

ご指摘部分、以下の通りです。

・更新ができた場合は「updated」というメッセージがポップアップで表示されます．  
これはでてきますか？

→ダイアログ表示されます。

・このコードがあるjsファイル内にgetRecordsがないと機能しないと思いますが，同じファイル内にありますか？

→参考記事のコンストラクタを別ファイルで保存しています。

そもそも設定を間違えているのでしょうか？

ご教授いただければ幸いです。どうぞよろしくお願いいたします。

---

<div class="post-metadata">

**Author:** ![Legacy\_Account2757](https://avatars.discourse-cdn.com/v4/letter/l/65b543/32.png) [@Legacy\_Account2757](https://community.cybozu.dev/u/Legacy_Account2757)\
**Post date:** [2022 年 9 月 14 日午前 2:07 UTC](https://community.cybozu.dev/t/topic/57/4 "2022-09-14T02:07:28Z")

</div>

ayoko様

＞参考記事のコンストラクタを別ファイルで保存しています。  
webpackをつかってimport/exportしているなら良いのですが，そうでない場合は，javascriptでは別ファイルにした関数は，そのままでは呼び出すことができません．  
[目指せ！JavaScriptカスタマイズ中級者（１） 〜webpack編〜](https://community.cybozu.dev/hc/ja/articles/360040220451-%E7%9B%AE%E6%8C%87%E3%81%9B-JavaScript%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%9E%E3%82%A4%E3%82%BA%E4%B8%AD%E7%B4%9A%E8%80%85-%EF%BC%91-webpack%E7%B7%A8-)  
上記以外にグローバル関数として使う方法もあるにはあるのですが，あまりお勧めはできません．

使う関数だけコピペして，動作するか検証してみるのが良いかと思います．

---

<div class="post-metadata">

**Author:** ![Legacy\_Account2274](https://avatars.discourse-cdn.com/v4/letter/l/e19adc/32.png) [@Legacy\_Account2274](https://community.cybozu.dev/u/Legacy_Account2274)\
**Post date:** [2022 年 9 月 14 日午前 3:03 UTC](https://community.cybozu.dev/t/topic/57/5 "2022-09-14T03:03:31Z")

</div>

[TO](https://community.cybozu.dev/hc/ja/profiles/902343704226-TO) 様

ご教示ありがとうございます。

参考記事をもう一度確認し、

```
 return{
           id: record.$id.value,
           record: {}
          };

```

部分を書き換えたところ、一覧画面で更新できました。

お騒がせいたしました。

この度はご親切にありがとうございました。

---

<div class="post-metadata">

**Author:** ![Legacy\_Account2782](https://avatars.discourse-cdn.com/v4/letter/l/ccd318/32.png) [@Legacy\_Account2782](https://community.cybozu.dev/u/Legacy_Account2782)\
**Post date:** [2023 年 2 月 23 日午前 6:18 UTC](https://community.cybozu.dev/t/topic/57/6 "2023-02-23T06:18:53Z")

</div>

[ayoko](https://community.cybozu.dev/hc/ja/profiles/900328498423-ayoko)様

&nbsp;

よければこちらの記事、どのように書き換えたか拝見させて頂くと勉強になります。。

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/flex015/uploads/cybozu/original/1X/d5c841c3c5a6cb66eed514001c1b45147c9e1f4f.png) [@system](https://community.cybozu.dev/u/system)\
**Post date:** [2023 年 11 月 9 日午前 7:38 UTC](https://community.cybozu.dev/t/topic/57/7 "2023-11-09T07:38:59Z")

</div>

クローズされました: 2023 年 11 月 9 日午前 7:38 UTC

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