# 関連レコードから値を出したい

**URL:** <https://community.cybozu.dev/t/topic/8639>\
**Category:** kintone 開発相談\
**Created:** [2024 年 1 月 31 日午前 6:10 UTC](https://community.cybozu.dev/t/topic/8639 "2024-01-31T06:10:29Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![ACVI](https://avatars.discourse-cdn.com/v4/letter/a/e495f1/32.png) [@ACVI](https://community.cybozu.dev/u/ACVI)\
**Post date:** [2024 年 1 月 31 日午前 6:10 UTC](https://community.cybozu.dev/t/topic/8639/1 "2024-01-31T06:10:29Z")

</div>

アプリAの状況フィールドに、アプリBの状況フィールドと同じ値が入力されるようにしたい。

調べてみましたが、コミュニティにしばしばリンクが張られている[https://community.cybozu.dev/hc/ja/articles/213209606](https://community.cybozu.dev/hc/ja/articles/213209606)  
は既にアクセスできなくなっているため、詳細がわかりませんでした。

いろいろやってみましたが基礎知識が足りないせいか行き詰ってしまいました。

```javascript
(() => {
  'use strict';

  const events = [
    'app.record.detail.show',
    'app.record.edit.show',
    'app.record.index.show'
  ];
  kintone.events.on(events, (event) => {
    const clientRecordId = event.recordId;
    const relatedAppId = kintone.app.getRelatedRecordsTargetAppId('アプリB');
    const query = `番号_番号="${clientRecordId}"`;
    const outputFields = ['状況'];
    const appUrl = kintone.api.url('/k/v1/records');

    const params = {
      app: relatedAppId,
      query: query,
      fields: outputFields
    };

    // XMLHttpRequestオブジェクトを取得
    const xhr = new XMLHttpRequest();
    xhr.open('GET', appUrl);
    // ヘッダーを追加
    xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
    // レスポンスの受け取りが完了した時の処理
    xhr.onload = function() {
      if (xhr.status === 200) {
        const resp = JSON.parse(xhr.responseText);
        // レスポンスから状況フィールドの値を取得
        const completeStatusValue = resp.records[0].状況.value;

        // 状況フィールドに値を設定する
        const recordData = {
          '状況': {
            'value': completeStatusValue // 状況の値を設定
          }
        };

        // レコードの更新
        const updateUrl = kintone.api.url('/k/v1/record');
        const updateParams = {
          'app': relatedAppId,
          'id': clientRecordId, // 更新するレコードのID
          'record': recordData // 更新するフィールドの値
        };
        kintone.api(updateUrl, 'PUT', updateParams, (updateResp) => {
          // 更新が成功した場合の処理
          console.log('レコードの更新が成功しました。', updateResp);
        }, (updateError) => {
          // 更新が失敗した場合の処理
          console.error('レコードの更新に失敗しました。', updateError);
        });
      }
    };
    // リクエストの送信
    xhr.send();

    return event;
  });
})();

```

---

<div class="post-metadata">

**Author:** ![aaa](https://sea1.discourse-cdn.com/flex015/user_avatar/community.cybozu.dev/aaa/32/277_2.png) [@aaa](https://community.cybozu.dev/u/aaa)\
**Post date:** [2024 年 1 月 31 日午前 7:17 UTC](https://community.cybozu.dev/t/topic/8639/2 "2024-01-31T07:17:57Z")

</div>

> [@関連レコードの件数を取得する-絞り込み条件の設定について](https://community.cybozu.dev/t/topic/6316):
>
> 関連レコードの件数を取得するため、下記のカスタマイズを参考して、サンプルコードを設定ました。 だが、絞り込み条件を設定しても、総件数を表示されます。 どうやって設定すればいいですか？ [https://developer.cybozu.io/hc/ja/articles/213209606-%E9%96%A2%E9%80%A3%E3%83%AC%E3%82%B3%E3%83%BC%E3%83%…](https://community.cybozu.dev/hc/ja/articles/213209606-%E9%96%A2%E9%80%A3%E3%83%AC%E3%82%B3%E3%83%BC%E3%83%89%E3%81%AE%E4%BB%B6%E6%95%B0%E3%82%92%E5%8F%96%E5%BE%97%E3%81%99%E3%82%8B%E3%83%AF%E3%82%B6)

によると  
[https://community.cybozu.dev/hc/ja/articles/213209606](https://community.cybozu.dev/hc/ja/articles/213209606)  
の後ろにURLエンコードされたページ名がありました。

`関連レコードの件数を取得するワザ`

というページ名だったようです。  
このページ名で検索すると現在のURLは

> **[関連レコードの件数を取得するワザ](https://cybozu.dev/ja/kintone/tips/development/customize/related-records/get-count-of-related-records/)**
>
> 関連レコードの件数を取得する方法について解説します

になっているようです。

---

<div class="post-metadata">

**Author:** ![ACVI](https://avatars.discourse-cdn.com/v4/letter/a/e495f1/32.png) [@ACVI](https://community.cybozu.dev/u/ACVI)\
**Post date:** [2024 年 2 月 1 日午前 12:50 UTC](https://community.cybozu.dev/t/topic/8639/3 "2024-02-01T00:50:09Z")

</div>

教えていただいたURLで確認しながら再度作り直してみましたが、エラーは起きないのですが何も作動してくれません。

理由としては何が考えられるのでしょうか。

```javascript
(() => {
    'use strict';

    //レコードの絞り込みに利用するフィールドの指定
const ACODE = '番号';
const BCODE = '番号';

kintone.events.on('app.record.index.show', async(event) => {

    //作動させる一覧の指定
    if(event.viewName !=='チェック') {
          return;
    }

    //0件ヒット時の対策
if(!event.size) {
      return;
}

//kintone-rest-api-client を使う準備
const client = new KintoneRestAPIClient();

// スケジュールの番号を取得
const clientName = event.record[ACODE].value;

//報告アプリ内で、同じ番号であるという条件付け
const appId = kintone.app.getRelatedRecordsTargetAppId('報告');
const query = `${BCODE}="${clientName}"`;

//レコードの取得上記の条件で検索する設定
const records = await client.record.getAllRecords({app: appId, condition: query});

 //状況を報告から取得する
 var jokyo = records.['状況'].value;

var record = event.record;
record['状況'].value = jokyo;

return event;
});
})();

```

---

<div class="post-metadata">

**Author:** ![aaa](https://sea1.discourse-cdn.com/flex015/user_avatar/community.cybozu.dev/aaa/32/277_2.png) [@aaa](https://community.cybozu.dev/u/aaa)\
**Post date:** [2024 年 2 月 1 日午前 1:07 UTC](https://community.cybozu.dev/t/topic/8639/4 "2024-02-01T01:07:41Z")

</div>

1. 

デバッグ機能で、どこまで意図通りに動いているか確認しませんか？

デバッグ - cybozu developer network

> **[デバッグ](https://cybozu.dev/ja/tutorials/hello-kinapi/debug/)**
>
> デバッグについて学びましょう。

kintone JavaScript カスタマイズデバッグまとめ - cybozu developer network

> **[kintone JavaScript カスタマイズデバッグまとめ](https://cybozu.dev/ja/kintone/tips/development/development-productivity/debug/kintone-js-customization-debugging/)**
>
> JavaScript カスタマイズをよりしやすくするためのデバッグの方法を紹介します。

1. 

関連レコードの件数を取得するワザ - cybozu developer network

> **[関連レコードの件数を取得するワザ](https://cybozu.dev/ja/kintone/tips/development/customize/related-records/get-count-of-related-records/)**
>
> 関連レコードの件数を取得する方法について解説します

の内容を完全に再現できているか？  
を確認した上でカスタマイズしていく上での差分を確認する

サンプルは詳細画面で、表示スペースに値を表示している  
質問者の意図は一覧画面で、値を書き換えようとしている？

---

<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:** [2024 年 5 月 10 日午前 1:48 UTC](https://community.cybozu.dev/t/topic/8639/5 "2024-05-10T01:48:09Z")

</div>

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