# 別のアプリから条件に合うレコード集を取得したい

**URL:** <https://community.cybozu.dev/t/topic/2347>\
**Category:** kintone 開発相談\
**Created:** [2015 年 12 月 31 日午後 7:27 UTC](https://community.cybozu.dev/t/topic/2347 "2015-12-31T19:27:50Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![Legacy\_Account179](https://avatars.discourse-cdn.com/v4/letter/l/5f8ce5/32.png) [@Legacy\_Account179](https://community.cybozu.dev/u/Legacy_Account179)\
**Post date:** [2015 年 12 月 31 日午後 7:27 UTC](https://community.cybozu.dev/t/topic/2347/1 "2015-12-31T19:27:50Z")

</div>

kintone,javascriptを勉強し始めの初心者です。以下ご教授お願いいたします。

あるアプリ（以下アプリA）に日付フィールド、担当者フィールド、金額フィールドがあります。

別の集計用アプリ（以下アプリB）に集計開始日フィールドと集計終了日フィールド及び、担当者フィールドが入力してあります。上記の条件でアプリAから抽出したレコード件数をアプリBの担当件数フィールドに格納したいと思っております。

javascriptの本やこのサイトの色々な投稿を閲覧しましたが、よくわかりません。会社から1週間でアプリの作成を命じられ困っております。

何を勉強したらよいかや、サンプルプログラムなどありましたら、是非ご教授をお願い申し上げます。

&nbsp;

---

<div class="post-metadata">

**Author:** ![Legacy\_Account179](https://avatars.discourse-cdn.com/v4/letter/l/5f8ce5/32.png) [@Legacy\_Account179](https://community.cybozu.dev/u/Legacy_Account179)\
**Post date:** [2015 年 12 月 31 日午後 7:43 UTC](https://community.cybozu.dev/t/topic/2347/2 "2015-12-31T19:43:57Z")

</div>

タイトルが間違ってました。

「レコード集」ではなく、「レコード数」です。すみません。

---

<div class="post-metadata">

**Author:** ![Legacy\_Account2115](https://avatars.discourse-cdn.com/v4/letter/l/e9bcb4/32.png) [@Legacy\_Account2115](https://community.cybozu.dev/u/Legacy_Account2115)\
**Post date:** [2016 年 1 月 1 日午前 5:48 UTC](https://community.cybozu.dev/t/topic/2347/3 "2016-01-01T05:48:25Z")

</div>

坂本秀治さん  
cstapの瀧ヶ平です。

REST APIのレコード一括取得に関しては[こちらのTips](https://community.cybozu.dev/hc/ja/articles/203727120)や[こちらのドキュメント](https://community.cybozu.dev/hc/ja/articles/202331474#step2)を参考に実装すると良いかと思います。

具体的な流れとしては、

1. レコードの作成/編集画面の表示時イベントでレコードの必要な情報を変数に格納する
2. kintone.apiメソッドでレコードの一括取得を行う。この際、totalCountパラメータをtrueに、queryパラメータを “{{集計開始日}} \<= 日付 and {{集計終了日}} \>= 日付 and 担当者 = {{担当者}}” となるようにする(波括弧でくくってある部分はアプリBのフィールドの実際の値にする)
3. レスポンスが返ってきたときのコールバック処理で件数を取得(response.totalCount)してレコードに格納する

という流れになります。  
また、[こちら](https://cybozudev.zendesk.com/hc/ja/articles/201941984#step2)にあるように、レコードの変更に関しては、kintone.apiメソッドが返すKintone Promiseオブジェクトをイベントリスナーの返り値にすることで、kintone.api().then(function(res){…})内の非同期処理を待ってからレコードを変更する必要があります。

以下にサンプルのコードを書いてみたので、参考にしていただければ幸いです。

&nbsp;

```
(function() {
"use strict";
kintone.events.on(["app.record.edit.show", "app.record.create.show"], function(event) {
var end, record, start, appId, staff;
appId = 000;
record = event.record;
start = record["集計開始日"].value;
end = record["集計終了日"].value;
staff = record["担当者"].value;
return kintone.api(kintone.api('/k/v1/records', true), "GET", {
app: appId,
totalCount: true,
query: start + " <= 日付 and " + end + " >= 日付 and 担当者 = " + staff
}).then(function(res) {
record["担当件数"].value = res.totalCount;
return event;
});
});
})();

```

&nbsp;

&nbsp;

---

<div class="post-metadata">

**Author:** ![Legacy\_Account179](https://avatars.discourse-cdn.com/v4/letter/l/5f8ce5/32.png) [@Legacy\_Account179](https://community.cybozu.dev/u/Legacy_Account179)\
**Post date:** [2016 年 1 月 1 日午前 5:58 UTC](https://community.cybozu.dev/t/topic/2347/4 "2016-01-01T05:58:36Z")

</div>

瀧ヶ平さん、ご教授ありがとうございます。

一行ずつ理解しながら、試行してみます。ありがとうございます。

---

<div class="post-metadata">

**Author:** ![Legacy\_Account1574](https://avatars.discourse-cdn.com/v4/letter/l/76d3ee/32.png) [@Legacy\_Account1574](https://community.cybozu.dev/u/Legacy_Account1574)\
**Post date:** [2016 年 1 月 4 日午前 4:14 UTC](https://community.cybozu.dev/t/topic/2347/5 "2016-01-04T04:14:18Z")

</div>

瀧ヶ平さんが書いてくださっているサンプル、お気づきかと思いますが、・・・現状でkintone.Promiseオブジェクトが返せるのはsubmitとproceedイベントだけなので、「show」のところは「submit」で、kintone.api()の第1引数は、パスかURLということで、「‘/k/v1/records’」か「kintone.api.url(‘/k/v1/records’, true)」ですね。あと、クエリも値の方をダブルクウォテーションで括らないとエラーになるものが多いので括っておくのが良いですね。

```
(function() {
"use strict";
kintone.events.on(["app.record.edit.submit", "app.record.create.submit"], function(event) {
var end, record, start, appId, staff;
appId = 000;
record = event.record;
start = record["集計開始日"].value;
end = record["集計終了日"].value;
staff = record["担当者"].value;
return kintone.api(kintone.api.url('/k/v1/records', true), "GET", {
app: appId,
totalCount: true,
query: '"' + start + '" <= 日付 and "' + end + '" >= 日付 and 担当者 = "' + staff + '"'
}).then(function(res) {
record["担当件数"].value = res.totalCount;
return event;
});
});
})();

```
