# 他アプリのデータを取得し、更新処理(一覧画面)

**URL:** <https://community.cybozu.dev/t/topic/569>\
**Category:** kintone 開発相談\
**Created:** [2017 年 10 月 4 日午前 8:12 UTC](https://community.cybozu.dev/t/topic/569 "2017-10-04T08:12:51Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![Legacy\_Account1480](https://avatars.discourse-cdn.com/v4/letter/l/76d3ee/32.png) [@Legacy\_Account1480](https://community.cybozu.dev/u/Legacy_Account1480)\
**Post date:** [2017 年 10 月 4 日午前 8:12 UTC](https://community.cybozu.dev/t/topic/569/1 "2017-10-04T08:12:51Z")

</div>

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

タイトルの件について、他のアプリからデータを取得し、そのデータを登録、更新を行いたいと考えております。

レコード追加時では出来るのですが、一覧画面を開いた際に自動で取得、取得先のデータが変更していれば、自動で更新するような設定が出来ないかと考えております。

連携するアプリは下記のような構成になっております。

\*-----------------------------------\*

H28年アプリ

・リレーション(文字列)※値の重複禁止でこちらをKeyにしています。

・合計(数値)

\*-----------------------------------\*

H29年アプリ

・リレーション(文字列)

・合計(数値)

・前年計(数値)※H28年アプリの合計の値が入るようにしたいです。

\*-----------------------------------\*

現在、下記コードで設定をしているのですが、うまくいきません。

```
(function() {
    "use strict";
    kintone.events.on('app.record.index.show', function(event){
        var changed = false;
        var appId = 448;
        var recordId1 = kintone.app.getFieldElements('リレーション');
        var recordId2 = kintone.app.getFieldElements('前年計');
        for (var i = 0; i < recordId1.length; i++) {
            var record = event.records[i];
            var relation = record['リレーション'].value;
            var OldTotal = record['前年計'].value;
            var getBody = {
                "app": appId,
                "query": 'リレーション = "' + relation + '"',
                "fields": ['合計'],
            };
            kintone.api(kintone.api.url('/k/v1/records', true), 'GET', getBody, function(resp) {
                var records = resp["records"];
                var putBody = {
                    "app": kintone.app.getId(),
                    "query": 'リレーション = "' + relation + '"',
                    "fields": ['前年計'],
                    "records":[]
                };
                records.forEach(function(record){
                    putBody.records.push({
                        "id": record.$id.value,
                        "record": {
                            "前年計": {
                                "value":OldTotal
                            }
                        }
                    });
                    if(OldTotal != record.前年計.value){
                        changed = true;
                    }
                });
                if(changed){
                    kintone.api(kintone.api.url('/k/v1/records', true), 'PUT', putBody, function(){
                        location.reload();
                    });
                }
            });
        }
    });
})();

```

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

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

---

<div class="post-metadata">

**Author:** ![Legacy\_Account1610](https://avatars.discourse-cdn.com/v4/letter/l/3e96dc/32.png) [@Legacy\_Account1610](https://community.cybozu.dev/u/Legacy_Account1610)\
**Post date:** [2017 年 10 月 10 日午後 4:28 UTC](https://community.cybozu.dev/t/topic/569/2 "2017-10-10T16:28:11Z")

</div>

H29年アプリのほうで、前年計を取得するのは、ルックアップで良いのでは?

ただし、ルックアップはH28年アプリを更新してもH29年アプリは更新できません。ですが、対処は可能です。

ルックアップのレコードの更新は[第11回 kintone REST APIを利用したレコード更新](https://community.cybozu.dev/hc/ja/articles/204537310-%E7%AC%AC11%E5%9B%9E-kintone-REST-API%E3%82%92%E5%88%A9%E7%94%A8%E3%81%97%E3%81%9F%E3%83%AC%E3%82%B3%E3%83%BC%E3%83%89%E6%9B%B4%E6%96%B0)を参考にしてください。

---

<div class="post-metadata">

**Author:** ![Legacy\_Account1480](https://avatars.discourse-cdn.com/v4/letter/l/76d3ee/32.png) [@Legacy\_Account1480](https://community.cybozu.dev/u/Legacy_Account1480)\
**Post date:** [2017 年 10 月 11 日午前 9:01 UTC](https://community.cybozu.dev/t/topic/569/3 "2017-10-11T09:01:20Z")

</div>

lpj 様

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

ルックアップでの設定も出来るのですが、レコード登録時のフローをなるべく簡易的にしよと思い

質問させていただきました。

もう少しREST APIについて調べてみて挑戦したいと思います。

アドバイスありがとうございました。

今後ともよろしくお願いいたします。

&nbsp;
