# チェックボックスの連動について(別アプリ同士)

**URL:** <https://community.cybozu.dev/t/topic/7014>\
**Category:** kintone 開発相談\
**Created:** [2021 年 3 月 8 日午前 8:11 UTC](https://community.cybozu.dev/t/topic/7014 "2021-03-08T08:11:07Z")\
**Posts on this page:** 13\
**Page:** 1

<div class="post-metadata">

**Author:** ![Legacy\_Account1458](https://avatars.discourse-cdn.com/v4/letter/l/85f322/32.png) [@Legacy\_Account1458](https://community.cybozu.dev/u/Legacy_Account1458)\
**Post date:** [2021 年 3 月 8 日午前 8:11 UTC](https://community.cybozu.dev/t/topic/7014/1 "2021-03-08T08:11:07Z")

</div>

下図のように、Aアプリの『発送』のチェックが付いた時に、Bアプリの『発送』もチェックを  
付けたいと考えております。  
見つけた、プラグイン等で試したのですが、上手くいきません。  
解決方法をご教示頂ければ幸いです。

---

<div class="post-metadata">

**Author:** ![Legacy\_Account2315](https://avatars.discourse-cdn.com/v4/letter/l/ea666f/32.png) [@Legacy\_Account2315](https://community.cybozu.dev/u/Legacy_Account2315)\
**Post date:** [2021 年 3 月 9 日午前 4:37 UTC](https://community.cybozu.dev/t/topic/7014/2 "2021-03-09T04:37:02Z")

</div>

アプリアクションを利用し

Aアプリ保存後、Bアプリに『発送』のチェック有無を連動させる方法はいかがでしょうか。

Aアプリ、Bアプリともにレコードを保存する手間はかかってしまいますが…

&nbsp;

『アプリアクションを設定する』

[https://jp.cybozu.help/k/ja/user/app\_settings/appaction/set\_appaction.html](https://jp.cybozu.help/k/ja/user/app_settings/appaction/set_appaction.html)

---

<div class="post-metadata">

**Author:** ![Legacy\_Account2502](https://avatars.discourse-cdn.com/v4/letter/l/e19adc/32.png) [@Legacy\_Account2502](https://community.cybozu.dev/u/Legacy_Account2502)\
**Post date:** [2021 年 3 月 9 日午前 5:38 UTC](https://community.cybozu.dev/t/topic/7014/3 "2021-03-09T05:38:07Z")

</div>

PUTで更新できます。

[https://developer.cybozu.io/hc/ja/articles/201941784-%E3%83%AC%E3%82%B3%E3%83%BC%E3%83%89%E3%81%AE%E6%9B%B4%E6%96%B0-PUT-](https://developer.cybozu.io/hc/ja/articles/201941784-%E3%83%AC%E3%82%B3%E3%83%BC%E3%83%89%E3%81%AE%E6%9B%B4%E6%96%B0-PUT-)&nbsp;

AアプリとBアプリで紐づくIDを用意し、一致するレコードを更新します。

チェックボックスにデータが入っていればBアプリに’発送’を渡し、NULLであればNULLを渡します。

以下、殴り書きですがコードを置いておきます。

```
(function () {
  'use strict';
  var putRecord = function (recordId, dm) {
    var params = {
      app: 1, // BアプリのID
      updateKey: {
        field: 'ID',
        value: recordId // Bアプリと紐づくKey
      },
      record: {
        'DM': {
          value: dm
        }
      }
    };
    return kintone.api(kintone.api.url('/k/v1/record'), 'PUT', params).then(function (resp) {
      alert('Bアプリ更新');
    });
  };
  kintone.events.on('app.record.create.submit.success', function (event) {
    var record = event.record;
    // BアプリのKeyを取得
    var Key = record['ID']['value'];
    var dm = [];
    // チェックボックス
    if (record['DM']['value'][0]) {
      dm = ['発送'];
    } else {
      dm = [];
    }
    return putRecord(Key, dm);
  });
})();

```

---

<div class="post-metadata">

**Author:** ![Legacy\_Account1458](https://avatars.discourse-cdn.com/v4/letter/l/85f322/32.png) [@Legacy\_Account1458](https://community.cybozu.dev/u/Legacy_Account1458)\
**Post date:** [2021 年 3 月 11 日午前 7:44 UTC](https://community.cybozu.dev/t/topic/7014/4 "2021-03-11T07:44:28Z")

</div>

下記のコードがある場合、どの様にコードを書けばよいのでしょうか？  
ご教示頂ければ、幸いです。

```
(function () {
"use strict";
const events = ['app.record.create.change.DM', 'app.record.edit.change.DM'];
kintone.events.on(events, function (event) {
var table = event.record.発送リスト.value;
var id = event.changes.row.value.ID.value;
var office = event.changes.row.value.会社名.value;
var office2 = event.changes.row.value.支店支社.value;
var post = event.changes.row.value.郵便番号.value;
var address = event.changes.row.value.都道府県.value;
var address2 = event.changes.row.value.住所1.value;
var address3 = event.changes.row.value.住所2.value;

if (event.changes.field.value.length !== 0) {
var newRow = {
"value": {
"発送ID": { "type": "NUMBER", "value": id },
"発送会社名": { "type": "SINGLE_LINE_TEXT", "value": office },
"発送支店支社": { "type": "SINGLE_LINE_TEXT", "value": office2 },
"発送郵便番号": { "type": "SINGLE_LINE_TEXT", "value": post },
"発送都道府県": { "type": "SINGLE_LINE_TEXT", "value": address },
"発送住所1": { "type": "SINGLE_LINE_TEXT", "value": address2 },
"発送住所2": { "type": "SINGLE_LINE_TEXT", "value": address3 },
}
};
table.push(newRow);
} else {
event.record.発送リスト.value = table.filter(function(row){
return row.value.発送ID.value !== id;
});
}
return event;
});
})();

```

---

<div class="post-metadata">

**Author:** ![Legacy\_Account2502](https://avatars.discourse-cdn.com/v4/letter/l/e19adc/32.png) [@Legacy\_Account2502](https://community.cybozu.dev/u/Legacy_Account2502)\
**Post date:** [2021 年 3 月 11 日午前 8:47 UTC](https://community.cybozu.dev/t/topic/7014/5 "2021-03-11T08:47:18Z")

</div>

チェックボックス「DM」にチェックが入ると同じ内容の行が増え、

さらにIDと紐づくBアプリのレコードのチェックボックスにチェックを入れる

という認識で合っていますか？

サンプルコードは保存時イベントなので、瞬時に更新したいのであればチェンジイベントに変更すればよいかと思います。

少し処理が重たいのでまずは確認まで。

---

<div class="post-metadata">

**Author:** ![Legacy\_Account1458](https://avatars.discourse-cdn.com/v4/letter/l/85f322/32.png) [@Legacy\_Account1458](https://community.cybozu.dev/u/Legacy_Account1458)\
**Post date:** [2021 年 3 月 11 日午前 8:53 UTC](https://community.cybozu.dev/t/topic/7014/6 "2021-03-11T08:53:27Z")

</div>

上記の通りです。  
複雑なコードを組んだことが無い為…

&nbsp;

---

<div class="post-metadata">

**Author:** ![Legacy\_Account2502](https://avatars.discourse-cdn.com/v4/letter/l/e19adc/32.png) [@Legacy\_Account2502](https://community.cybozu.dev/u/Legacy_Account2502)\
**Post date:** [2021 年 3 月 11 日午前 10:57 UTC](https://community.cybozu.dev/t/topic/7014/7 "2021-03-11T10:57:58Z")

</div>

簡単に書いてみたのですが、いかがでしょうか。

フィールド名やフィールド数が不完全なので環境に合わせてください。

チェックを入れた瞬間に更新がかかるのでレコードを保存しなかった場合、Bアプリのデータが発送のままになってしまいます。

他にわからないことなどあればお答えできます。

```
(function () {
  'use strict';
  var putRecord = function (recordId, dm) {
    var params = {
      app: 0, // BアプリのappId
      updateKey: {
        field: 'id',
        value: recordId
      },
      record: {
        'DM': {
          value: dm
        }
      }
    };
    return kintone.api(kintone.api.url('/k/v1/record'), 'PUT', params).then(function (resp) {
      alert('Bアプリ更新');
    });
  };
  var events = ['app.record.create.change.DM', 'app.record.edit.change.DM'];
  kintone.events.on(events, function (event) {
    var record = event.record;
    var table = record['発送リスト']['value'];
    var id = event.changes.row.value.id.value;
    var office = event.changes.row.value.会社名.value;
    var dm = [];
    if (event.changes.field.value.length !== 0) {
      dm = ['発送'];
      var newRow = {
        value: {
          DM: {
            type: 'CHECK_BOX',
            value: []
          },
          id: {
            type: "NUMBER",
            value: id
          },
          会社名: {
            type: "SINGLE_LINE_TEXT",
            value: office
          }
        }
      };
      table.push(newRow);
    } else {
      record['発送リスト']['value'] = table.filter(function (row) {
        return row.value.id.value !== id;
      });
    }
    putRecord(id, dm);
    return event;
  });
})();

```

---

<div class="post-metadata">

**Author:** ![Legacy\_Account1458](https://avatars.discourse-cdn.com/v4/letter/l/85f322/32.png) [@Legacy\_Account1458](https://community.cybozu.dev/u/Legacy_Account1458)\
**Post date:** [2021 年 3 月 12 日午前 2:02 UTC](https://community.cybozu.dev/t/topic/7014/8 "2021-03-12T02:02:14Z")

</div>

mionix様、ご回答誠にありがとうございます。

field: ‘id’,をレコード番号にしたいのですが、上手くいきません。  
updateKeyに指定するフィールドは、決まっているのでしょうか。

```
var params = {
 app: 127, // BアプリのappId
 updateKey: {
  field: 'id',
  value: recordId
 },
 record: {
  'DM': { value: dm },
 }
};

```

---

<div class="post-metadata">

**Author:** ![Legacy\_Account2502](https://avatars.discourse-cdn.com/v4/letter/l/e19adc/32.png) [@Legacy\_Account2502](https://community.cybozu.dev/u/Legacy_Account2502)\
**Post date:** [2021 年 3 月 12 日午前 2:16 UTC](https://community.cybozu.dev/t/topic/7014/9 "2021-03-12T02:16:57Z")

</div>

field: 'id’をレコード番号のフィールドコードに変更して動作しませんか？

value: recordIdはAアプリ内のIDを取得した値です。

```
varparams= {
 app:127,// BアプリのappId
 updateKey: {
  field:'レコード番号', ←Bアプリのレコード番号のフィールドコード
  value: recordId
 },
 record: {
  'DM': {value: dm },
 }
};

```

---

<div class="post-metadata">

**Author:** ![Legacy\_Account1458](https://avatars.discourse-cdn.com/v4/letter/l/85f322/32.png) [@Legacy\_Account1458](https://community.cybozu.dev/u/Legacy_Account1458)\
**Post date:** [2021 年 3 月 12 日午前 2:24 UTC](https://community.cybozu.dev/t/topic/7014/10 "2021-03-12T02:24:03Z")

</div>

mionix様、ご回答誠にありがとうございます。

レコード番号に変更すると、

\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*  
“レコードの更新に失敗しました。  
「updateKey」に指定したフィールド（code: レコード番号)が不正です。  
「updateKey」には、文字列（1行）フィールドか数値フィールドのみ指定できます。  
また、フィールドの設定で、値の重複を禁止する必要があります。”  
\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*

とエラーが表示されてしまいます。

---

<div class="post-metadata">

**Author:** ![Legacy\_Account2502](https://avatars.discourse-cdn.com/v4/letter/l/e19adc/32.png) [@Legacy\_Account2502](https://community.cybozu.dev/u/Legacy_Account2502)\
**Post date:** [2021 年 3 月 12 日午前 2:45 UTC](https://community.cybozu.dev/t/topic/7014/11 "2021-03-12T02:45:07Z")

</div>

すみません、忘れてました。

updateKeyではなく、idで指定して下さい。

いかがでしょうか・・・

```
var params = {
        app: 127, // BアプリのappId
        id: recordId,
        record: {
          'DM': {
            value: dm
          }
        }

```

---

<div class="post-metadata">

**Author:** ![Legacy\_Account1458](https://avatars.discourse-cdn.com/v4/letter/l/85f322/32.png) [@Legacy\_Account1458](https://community.cybozu.dev/u/Legacy_Account1458)\
**Post date:** [2021 年 3 月 12 日午前 2:55 UTC](https://community.cybozu.dev/t/topic/7014/12 "2021-03-12T02:55:33Z")

</div>

mionix様、ご回答誠にありがとうございます。

無事解決しました。  
ありがとうございました。

---

<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:** [2025 年 5 月 29 日午前 4:40 UTC](https://community.cybozu.dev/t/topic/7014/13 "2025-05-29T04:40:18Z")

</div>

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