# ルックアップ先の一括更新について、複数のルックアップ先を更新したい

**URL:** <https://community.cybozu.dev/t/topic/3017>\
**Category:** kintone 開発相談\
**Created:** [2018 年 4 月 24 日午前 6:20 UTC](https://community.cybozu.dev/t/topic/3017 "2018-04-24T06:20:45Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![Legacy\_Account660](https://avatars.discourse-cdn.com/v4/letter/l/f14d63/32.png) [@Legacy\_Account660](https://community.cybozu.dev/u/Legacy_Account660)\
**Post date:** [2018 年 4 月 24 日午前 6:20 UTC](https://community.cybozu.dev/t/topic/3017/1 "2018-04-24T06:20:45Z")

</div>

お世話になっております。  
Javascriptは勉強中の身です、いい方法がありましたらご教示いただきたく思います。

第11回 kintone REST APIを利用したレコード更新  
[https://developer.cybozu.io/hc/ja/articles/204537310-%E7%AC%AC11%E5%9B%9E-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](https://developer.cybozu.io/hc/ja/articles/204537310-%E7%AC%AC11%E5%9B%9E-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)&nbsp;&nbsp;  
を参考に、相手先マスタアプリとそれを参照するアプリを作っているのですが  
マスタアプリを参照するアプリが複数あります。（アプリA、アプリB、アプリCとします）

解説では参照先アプリが一つしかありませんが、参照先が複数ある場合は  
どのように記述すればいいでしょうか？

以下のコードでアプリA（ID：10）のみの更新はできましたが、複数のアプリIDを指定する方法がわかりません。  
どうぞよろしくお願いいたします。

(function() {  
&nbsp;“use strict”;

&nbsp;var target = null;  
&nbsp;kintone.events.on([‘app.record.edit.submit’, ‘app.record.index.edit.submit’], function(event) {

&nbsp;&nbsp;var appid = 10;  
&nbsp;&nbsp;var target = event.record.契約先CD.value;

&nbsp;&nbsp;var manager = new KintoneRecordManager;  
&nbsp;&nbsp;manager.getRecords(appid, target, function(records) {

&nbsp;&nbsp;&nbsp;updateLookup(appid, createPutRecords(records));  
&nbsp;&nbsp;&nbsp;KintoneRecordManager.prototype.records = [];  
&nbsp;&nbsp;&nbsp;KintoneRecordManager.prototype.offset = 0;

&nbsp;&nbsp;});

&nbsp;});

&nbsp;kintone.events.on(‘app.record.edit.submit’, function(event) {

&nbsp;&nbsp;var appid = 10;  
&nbsp;&nbsp;var target = event.record.契約先CD.value;

&nbsp;&nbsp;var manager = new KintoneRecordManager;  
&nbsp;&nbsp;manager.getRecords(appid, target, function(records) {

&nbsp;&nbsp;&nbsp;updateLookup(appid, createPutRecords(records));  
&nbsp;&nbsp;&nbsp;KintoneRecordManager.prototype.records = [];  
&nbsp;&nbsp;&nbsp;KintoneRecordManager.prototype.offset = 0;

&nbsp;&nbsp;});

&nbsp;});  
&nbsp;  
&nbsp;var KintoneRecordManager = (function() {

&nbsp;&nbsp;function KintoneRecordManager() {  
&nbsp;&nbsp;}

&nbsp;&nbsp;KintoneRecordManager.prototype.records = [];&nbsp;// 取得したレコード  
&nbsp;&nbsp;KintoneRecordManager.prototype.limit = 2;&nbsp;&nbsp;// 一回あたりの最大取得件数  
&nbsp;&nbsp;KintoneRecordManager.prototype.offset = 0;&nbsp;&nbsp;// オフセット

&nbsp;&nbsp;KintoneRecordManager.prototype.getRecords = function(appid, target, callback) {

&nbsp;&nbsp;&nbsp;kintone.api(  
&nbsp;&nbsp;&nbsp;&nbsp;kintone.api.url(‘/k/v1/records’, true),  
&nbsp;&nbsp;&nbsp;&nbsp;‘GET’,  
&nbsp;&nbsp;&nbsp;&nbsp;{  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;app: appid,  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;query: ‘相手先CD = "’+ target + ‘" ’ + (’ limit ’ + this.limit + ’ offset ’ + this.offset)  
&nbsp;&nbsp;&nbsp;&nbsp;},  
&nbsp;&nbsp;&nbsp;&nbsp;(function(\_this) {  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return function(res) {

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var len;  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Array.prototype.push.apply(\_this.records, res.records);  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;len = res.records.length;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\_this.offset += len;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (len \< \_this.limit) { // まだレコードがあるか？

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (callback !== null) {  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;callback(\_this.records); // レコード取得後のcallback  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else {  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\_this.getRecords(appid, target, callback); // 自分自身をコール  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;};  
&nbsp;&nbsp;&nbsp;&nbsp;})(this)  
&nbsp;&nbsp;&nbsp;);  
&nbsp;&nbsp;};

&nbsp;&nbsp;return KintoneRecordManager;  
&nbsp;})();

&nbsp;function createPutRecords(records) {  
&nbsp;&nbsp;var putRecords = [];  
&nbsp;&nbsp;for (var i = 0, l = records.length; i \< l; i++) {  
&nbsp;&nbsp;&nbsp;var record = records[i];  
&nbsp;&nbsp;&nbsp;putRecords[i] = {  
&nbsp;&nbsp;&nbsp;&nbsp;id: record[‘$id’].value,  
&nbsp;&nbsp;&nbsp;&nbsp;record: {  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;“相手先CD” : {  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;value: record.相手先CD.value  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}  
&nbsp;&nbsp;&nbsp;&nbsp;}  
&nbsp;&nbsp;&nbsp;};  
&nbsp;&nbsp;}

&nbsp;&nbsp;return putRecords;  
&nbsp;}

&nbsp;function updateLookup(appId, records) {  
&nbsp;&nbsp;if ( records.length != 0 ) {  
&nbsp;&nbsp;&nbsp;kintone.api(

&nbsp;&nbsp;&nbsp;&nbsp;kintone.api.url(‘/k/v1/records’, true),  
&nbsp;&nbsp;&nbsp;&nbsp;‘PUT’,  
&nbsp;&nbsp;&nbsp;&nbsp;{  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;app: appId,  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;records: records  
&nbsp;&nbsp;&nbsp;&nbsp;},  
&nbsp;&nbsp;&nbsp;&nbsp;function(resp) {

&nbsp;&nbsp;&nbsp;&nbsp;}

&nbsp;&nbsp;&nbsp;);  
&nbsp;&nbsp;}  
&nbsp;}

})();

&nbsp;

---

<div class="post-metadata">

**Author:** ![Legacy\_Account1896](https://avatars.discourse-cdn.com/v4/letter/l/f14d63/32.png) [@Legacy\_Account1896](https://community.cybozu.dev/u/Legacy_Account1896)\
**Post date:** [2018 年 4 月 25 日午前 6:07 UTC](https://community.cybozu.dev/t/topic/3017/2 "2018-04-25T06:07:10Z")

</div>

kiriminさん

レコード更新のAPIを複数アプリに対して使用したい場合は、bulkAPIを使うと使用できるかと思います。

流れとしては、  
・対象3つのアプリからレコードを取得してくる  
・取得したレコードをbulkAPI用に成型する  
・bulkAPIを叩く

の流れで実装してみるといいかもしれません。

bulkAPIについては  
[https://developer.cybozu.io/hc/ja/articles/201941814](https://developer.cybozu.io/hc/ja/articles/201941814)  
こちらに記事があるので参考にしてみてください。

---

<div class="post-metadata">

**Author:** ![Legacy\_Account660](https://avatars.discourse-cdn.com/v4/letter/l/f14d63/32.png) [@Legacy\_Account660](https://community.cybozu.dev/u/Legacy_Account660)\
**Post date:** [2018 年 5 月 2 日午前 2:30 UTC](https://community.cybozu.dev/t/topic/3017/3 "2018-05-02T02:30:09Z")

</div>

HANSA様  
お礼が遅くなりまして申し訳ありません、アドバイスありがとうございます。

提示いただいた記事を参考に試行錯誤してみたいと思います。
