# ユーザー選択で選択したユーザーの優先組織を組織選択に表示したい

**URL:** <https://community.cybozu.dev/t/topic/310>\
**Category:** kintone 開発相談\
**Created:** [2017 年 3 月 14 日午前 12:39 UTC](https://community.cybozu.dev/t/topic/310 "2017-03-14T00:39:29Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![Legacy\_Account1601](https://avatars.discourse-cdn.com/v4/letter/l/f07891/32.png) [@Legacy\_Account1601](https://community.cybozu.dev/u/Legacy_Account1601)\
**Post date:** [2017 年 3 月 14 日午前 12:39 UTC](https://community.cybozu.dev/t/topic/310/1 "2017-03-14T00:39:29Z")

</div>

お世話になっております。

タイトルのようにユーザー選択されたらそのユーザーの優先組織を組織選択に

表示させるようにしたいです。

以下サンプルです。APIの使い方がわからないので間違っていると思います。

(function() {  
&nbsp;&nbsp;&nbsp; “use strict”;  
&nbsp;&nbsp;&nbsp; kintone.events.on(“app.record.create.change.ユーザー選択”, function(event) {  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var record = event.record;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var apporg = kintone.app.record.primaryOrganization;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var&nbsp;userorg = kintone.app.record.AdminGetOrgDetailByIds(apporg);

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;record[‘組織選択’][‘value’] =&nbsp;userorg;

&nbsp;&nbsp; });

})();

そもそも、可能なのでしょうか。APIの使い方以外にも間違いがありましたら指摘してください。具体的にコードで指示してください。

以上、よろしくお願いします。

---

<div class="post-metadata">

**Author:** ![Legacy\_Account1557](https://avatars.discourse-cdn.com/v4/letter/l/49beb7/32.png) [@Legacy\_Account1557](https://community.cybozu.dev/u/Legacy_Account1557)\
**Post date:** [2017 年 3 月 14 日午前 2:02 UTC](https://community.cybozu.dev/t/topic/310/2 "2017-03-14T02:02:43Z")

</div>

須永 達士さん

こんにちは。

ユーザに紐づく優先組織を取得するのは可能です。

UserAPIを使いユーザコードをキーにして、ユーザ情報の詳細を取得してその中の優先組織のIDを取得します。

コードは以下のような感じになります。

```
(function() {
  "use strict";
  kintone.events.on("app.record.create.change.ユーザー選択", function(event) {
    var userId = event.record['ユーザー選択'].value[0].code; //ユーザコード取得
    var body = {
      "ids": [userId]
    };
    
    // UserAPI
    kintone.api(kintone.api.url('/v1/users', true), 'GET', body, function(resp) {
        var orgId = resp.users[0].primaryOrganization; // 優先組織のIDを取得
        var rec = kintone.app.record.get(); // 編集画面に表示しているレコードの取得
        rec.record['組織選択'].value = [{"code": orgId}];
        kintone.app.record.get(rec); // 編集画面に表示しているレコードの書き換え
    });
  });
})();

```

&nbsp;

---

<div class="post-metadata">

**Author:** ![Legacy\_Account1601](https://avatars.discourse-cdn.com/v4/letter/l/f07891/32.png) [@Legacy\_Account1601](https://community.cybozu.dev/u/Legacy_Account1601)\
**Post date:** [2017 年 3 月 14 日午前 2:05 UTC](https://community.cybozu.dev/t/topic/310/3 "2017-03-14T02:05:06Z")

</div>

カキ氷さん

ありがとうございます。さっそく試してみます。

&nbsp;

---

<div class="post-metadata">

**Author:** ![Legacy\_Account1601](https://avatars.discourse-cdn.com/v4/letter/l/f07891/32.png) [@Legacy\_Account1601](https://community.cybozu.dev/u/Legacy_Account1601)\
**Post date:** [2017 年 3 月 14 日午前 2:51 UTC](https://community.cybozu.dev/t/topic/310/4 "2017-03-14T02:51:24Z")

</div>

カキ氷さん

すいません。下記のソースで上手くいかないのでデバックにアラートを入れたところ

①番目のアラートはユーザーIDが表示されて

②番目のアラートにはメールアドレスが表示されて

③番目のアラートにはnullが表示されました。

body のidsをid にしましたが、idsのままですと②番目と③番目のアラートが出ないです。

よろしくお願い致します。

&nbsp;

(function() {  
“use strict”;  
kintone.events.on(“app.record.create.change.user\_charge”, function(event) {  
var userId = event.record[‘user\_charge’].value[0].code; //ユーザコード取得  
var body = {  
“id”: [userId]  
};  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; alert(userId);  
// UserAPI  
kintone.api(kintone.api.url(‘/v1/users’, true), ‘GET’, body, function(resp) {  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; alert(resp.users[0].name);  
var orgId = resp.users[0].primaryOrganization; // 優先組織のIDを取得  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; alert(orgId);  
var rec = kintone.app.record.get(); // 編集画面に表示しているレコードの取得  
rec.record[‘spcc\_org’].value = orgId;  
kintone.app.record.get(rec); // 編集画面に表示しているレコードの書き換え  
});  
});  
})();

&nbsp;

---

<div class="post-metadata">

**Author:** ![Legacy\_Account1557](https://avatars.discourse-cdn.com/v4/letter/l/49beb7/32.png) [@Legacy\_Account1557](https://community.cybozu.dev/u/Legacy_Account1557)\
**Post date:** [2017 年 3 月 14 日午前 5:26 UTC](https://community.cybozu.dev/t/topic/310/5 "2017-03-14T05:26:28Z")

</div>

須永 達士さん

すいません。 idsは内部で持っているユーザIDのようで、今回の場合はbodyにcodesを設定することでユーザコードを指定して取得できました。

あと、最後にレコードに反映するところがget()になっていたのでsetに修正しています。

```
(function() {
  "use strict";
  kintone.events.on("app.record.create.change.ユーザー選択", function(event) {
    var userId = event.record['ユーザー選択'].value[0].code; //ユーザコード取得
    var body = {
      "codes": [userId]
    };
    // UserAPI
    kintone.api(kintone.api.url('/v1/users', true), 'GET', body, function(resp) {
        var orgId = resp.users[0].primaryOrganization; // 優先組織のIDを取得
        var rec = kintone.app.record.get(); // 編集画面に表示しているレコードの取得
        rec.record['組織選択'].value = [{"code": orgId}];
        kintone.app.record.set(rec); // 編集画面に表示しているレコードの書き換え
    });
  });
})();

```

&nbsp;

---

<div class="post-metadata">

**Author:** ![Legacy\_Account1601](https://avatars.discourse-cdn.com/v4/letter/l/f07891/32.png) [@Legacy\_Account1601](https://community.cybozu.dev/u/Legacy_Account1601)\
**Post date:** [2017 年 3 月 14 日午前 7:55 UTC](https://community.cybozu.dev/t/topic/310/6 "2017-03-14T07:55:13Z")

</div>

カキ氷さん

お返事ありがとうございます。上記コードを試してみましたが、resp.users[0].primaryOrganizationで

１８という値が返ってきました。この値は優先組織のコードXXXXXXXの桁数とも違っています。

API名は合っていますので取り方が違うのだと思います。

また組織コードのから組織名を取るやり方ですが、AdminGetOrgDetailByIdsを使うのではないでしょうか。

その場合の具体的な使い方を示してください。

よろしくお願いいたします。

&nbsp;

---

<div class="post-metadata">

**Author:** ![Legacy\_Account1557](https://avatars.discourse-cdn.com/v4/letter/l/49beb7/32.png) [@Legacy\_Account1557](https://community.cybozu.dev/u/Legacy_Account1557)\
**Post date:** [2017 年 3 月 14 日午前 8:53 UTC](https://community.cybozu.dev/t/topic/310/7 "2017-03-14T08:53:10Z")

</div>

須永 達士さん

&nbsp;

\>AdminGetOrgDetailByIds  
こちらはガルーンのAPIになります。

[ユーザ詳細のパラメータ](https://community.cybozu.dev/hc/ja/articles/205309740#step2)を確認すると、primaryOrganizationには「優先する組織」のIDが入っていますが、  
レコード内の組織フィールドに設定する場合は、「組織コード」を設定する必要がありました。

変換しないとならないのが面倒ですが、先程取得した「組織ID」を「組織コード」に変換するためには[組織エクスポート API(JSON）](https://community.cybozu.dev/hc/ja/articles/202124754#step2)を使う必要があります。  
この組織エクスポート APIの結果から、組織コードを取得してレコードに反映します。

&nbsp;

```
(function() {
 "use strict";
 kintone.events.on("app.record.create.change.ユーザー選択", function(event) {
  var userId = event.record['ユーザー選択'].value[0].code; //ユーザコード取得
  var body = {
   "codes": [userId]
  };
  // ユーザcodeをkeyにしてユーザの詳細を取得
  kintone.api(kintone.api.url('/v1/users', true), 'GET', body, function(resp) {
   var orgId = resp.users[0].primaryOrganization; // 優先組織のIDを取得
   var body2 = {
    "ids": [orgId]
   };
   // 組織idをkeyにして組織の詳細を取得
   kintone.api(kintone.api.url('/v1/organizations', true), 'GET', body2, function(resp2) {
    var orgCode = resp2.organizations[0].code; // 優先組織のcodeを取得
    var rec = kintone.app.record.get(); // 編集画面に表示しているレコードの取得
    rec.record['組織選択'].value = [{
     "code": orgCode
    }];
    kintone.app.record.set(rec); // 編集画面に表示しているレコードの書き換え
   });
  });
 });
})();

```

---

<div class="post-metadata">

**Author:** ![Legacy\_Account1601](https://avatars.discourse-cdn.com/v4/letter/l/f07891/32.png) [@Legacy\_Account1601](https://community.cybozu.dev/u/Legacy_Account1601)\
**Post date:** [2017 年 3 月 15 日午前 1:23 UTC](https://community.cybozu.dev/t/topic/310/8 "2017-03-15T01:23:56Z")

</div>

カキ氷さん

var orgCode = resp2.organizations[0].code; // 優先組織のcodeを取得

をvar orgCode = resp2.organizations[0].name;

にしたら上手くいきました。

ありがとうございました。また、何かありましたらよろしくお願いします。

---

<div class="post-metadata">

**Author:** ![Legacy\_Account2044](https://avatars.discourse-cdn.com/v4/letter/l/839c29/32.png) [@Legacy\_Account2044](https://community.cybozu.dev/u/Legacy_Account2044)\
**Post date:** [2018 年 1 月 16 日午前 8:29 UTC](https://community.cybozu.dev/t/topic/310/9 "2018-01-16T08:29:57Z")

</div>

横からすみません。

上記、ユーザ選択が1名の場合には動作したのですが、

複数名を選択した場合には最初のユーザの所属組織しか選択されませんでした。

複数のユーザ選択に対応する場合にはどのようにしたら良いのでしょうか。

```
var orgCode = resp2.organizations[0].name;

```

の箇所のみループ対応させる、ということになるのでしょうか。

---

<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 年 8 月 21 日午前 4:48 UTC](https://community.cybozu.dev/t/topic/310/10 "2025-08-21T04:48:46Z")

</div>

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