# ゲストスペースのアプリとメインのスペースのアプリで連携(更新)をしたいです

**URL:** <https://community.cybozu.dev/t/topic/8667>\
**Category:** kintone 開発相談\
**Created:** [2024 年 2 月 8 日午前 7:23 UTC](https://community.cybozu.dev/t/topic/8667 "2024-02-08T07:23:27Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![Brain\_Ryo](https://avatars.discourse-cdn.com/v4/letter/b/7feea3/32.png) [@Brain\_Ryo](https://community.cybozu.dev/u/Brain_Ryo)\
**Post date:** [2024 年 2 月 8 日午前 7:23 UTC](https://community.cybozu.dev/t/topic/8667/1 "2024-02-08T07:23:27Z")

</div>

### 何を実現したいのかを書きましょう

ゲストスペースのアプリ使用時にメインのスペースのアプリへ番号(key)(文字列フィールドです)を元にゲストスペースのアプリ内の名前フィールドの内容をメインスペースのアプリ内の名前フィールドに更新したいです

### 発生した問題やエラーメッセージを具体的に書きましょう

apiトークンやユーザーのそもそもの権限、メインとゲスト側ともにアプリの権限があるのですが何故か権限がないとエラーが出てしまいます。

### 実行したコードをコピー＆ペーストしましょう

アプリidやapiトークンはわざとxx～にしております。

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

  // アプリIDとフィールドコードの定義
  const TO_APP_ID = xxx; // メインスペースのアプリIDに変更してください
  const NUMBER_FIELD_CODE = 'number_field_code'; // 番号フィールドのフィールドコードに変更してください
  const FROM_FIELD_CODE = 'from_field'; // ゲストスペースのフィールドコードに変更してください
  const TO_FIELD_CODE = 'to_field'; // メインスペースのフィールドコードに変更してください
  const API_TOKEN = 'xxxxxxxxxxxxxxxxxxx'; // 実際のAPIトークンに置き換えてください

  // レコード更新関数
  const updateRecord = (recordId, fieldValue) => {
    const body = {
      app: TO_APP_ID,
      id: recordId,
      record: {
        [TO_FIELD_CODE]: {
          value: fieldValue
        }
      }
    };
    const params = {
      method: 'PUT',
      headers: {'X-Cybozu-API-Token': API_TOKEN},
      body: JSON.stringify(body)
    };

    kintone.api(kintone.api.url('/k/v1/record', true), 'PUT', body, () => {
      alert('レコード更新に成功しました');
    }, (error) => {
      console.error(error);
      alert('レコード更新に失敗しました');
    });
  };

  // レコード検索および更新関数
  const searchAndUpdateRecord = (numberValue, fieldValue) => {
    const query = `${NUMBER_FIELD_CODE} = "${numberValue}" limit 1`;
    const body = {
      app: TO_APP_ID,
      query: query
    };
    const params = {
      method: 'GET',
      headers: {'X-Cybozu-API-Token': API_TOKEN}
    };

    kintone.api(kintone.api.url('/k/v1/records', true), 'GET', body, (resp) => {
      if (resp.records.length > 0) {
        const recordId = resp.records[0].$id.value;
        updateRecord(recordId, fieldValue);
      } else {
        alert('一致するレコードが見つかりませんでした');
      }
    }, (error) => {
      console.error(error);
      alert('レコード検索に失敗しました');
    });
  };

  // ボタン追加イベント
  kintone.events.on('app.record.detail.show', (event) => {
    if (document.getElementById('update_button') !== null) {
      return;
    }
    const updateButton = document.createElement('button');
    updateButton.id = 'update_button';
    updateButton.innerText = '更新する';
    updateButton.onclick = () => {
      const numberValue = event.record[NUMBER_FIELD_CODE].value;
      const fieldValue = event.record[FROM_FIELD_CODE].value;
      searchAndUpdateRecord(numberValue, fieldValue);
    };
    kintone.app.record.getHeaderMenuSpaceElement().appendChild(updateButton);
  });
})();

```

---

<div class="post-metadata">

**Author:** ![Brain\_Ryo](https://avatars.discourse-cdn.com/v4/letter/b/7feea3/32.png) [@Brain\_Ryo](https://community.cybozu.dev/u/Brain_Ryo)\
**Post date:** [2024 年 2 月 9 日午前 9:24 UTC](https://community.cybozu.dev/t/topic/8667/2 "2024-02-09T09:24:28Z")

</div>

> [@Brain\_Ryo](#):
>
> `kintone.api(kintone.api.url('/k/v1/records', true)`

kintone.api(kintone.api.url(‘/k/v1/records’, true)のtrueをfalseにしたら解決いたしました。

---

<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 年 2 月 12 日午前 9:24 UTC](https://community.cybozu.dev/t/topic/8667/3 "2024-02-12T09:24:57Z")

</div>

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