# ユーザー選択で指定したユーザの役職を別な文字列項目などに表示したい。

**URL:** <https://community.cybozu.dev/t/topic/4331>\
**Category:** kintone 開発相談\
**Created:** [2019 年 8 月 26 日午前 3:21 UTC](https://community.cybozu.dev/t/topic/4331 "2019-08-26T03:21:49Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![Legacy\_Account1041](https://avatars.discourse-cdn.com/v4/letter/l/3ab097/32.png) [@Legacy\_Account1041](https://community.cybozu.dev/u/Legacy_Account1041)\
**Post date:** [2019 年 8 月 26 日午前 3:21 UTC](https://community.cybozu.dev/t/topic/4331/1 "2019-08-26T03:21:49Z")

</div>

kintoneのフォーム設定で、ユーザを選択するフィールドを設けており、ユーザ選択時に、隣の文字列フィールドへ、選択したユーザの役職名を表示致したく考えております。

APIなどで自動表示する方法をご存知の方がおられましたら、アドバイス頂けると助かります。

---

<div class="post-metadata">

**Author:** ![Legacy\_Account870](https://avatars.discourse-cdn.com/v4/letter/l/cc9497/32.png) [@Legacy\_Account870](https://community.cybozu.dev/u/Legacy_Account870)\
**Post date:** [2019 年 8 月 26 日午前 4:40 UTC](https://community.cybozu.dev/t/topic/4331/2 "2019-08-26T04:40:30Z")

</div>

uto さん

こんにちは。ひよこです。

JS API と REST API を組み合わせれば出来ると思います。

ポイントは以下の2つです。

- ユーザ選択時＝フィールドの値が変更されたときに、イベントを発火するには、フィールド変更時イベントを使います。
- ユーザーの役職を取得するには、User API の[ユーザーの所属組織エクスポート API(JSON)](https://community.cybozu.dev/hc/ja/articles/202124774#step2) を使います。

&nbsp;

こんな流れでしょうか。

1. フィールド変更時イベント（[追加](https://community.cybozu.dev/hc/ja/articles/201941984#step3) / [編集](https://community.cybozu.dev/hc/ja/articles/202166270#step3)）ハンドラを使います。

2. ユーザーを選択するフィールドに設定された code を取得する

3. 2.で取得した code を使って [ユーザーの所属組織エクスポート API(JSON)](https://community.cybozu.dev/hc/ja/articles/202124774#step2) を使います。  
この REST API は、[kintone REST APIリクエストを送信する](https://community.cybozu.dev/hc/ja/articles/202166310#step1)を使って実行できます。

4. レスポンスの中に、[organizationTitle型](https://community.cybozu.dev/hc/ja/articles/205309740#step6)&nbsp;のオブジェクトが返ってきます。役職名は title.name に入っています。

5. [レコードの値を取得する](https://community.cybozu.dev/hc/ja/articles/201942014#step2)で取得した record に代入し、[レコードに値をセットする](https://community.cybozu.dev/hc/ja/articles/201942014#step4) でセットします。

6. return event します。

&nbsp;

---

<div class="post-metadata">

**Author:** ![Legacy\_Account1041](https://avatars.discourse-cdn.com/v4/letter/l/3ab097/32.png) [@Legacy\_Account1041](https://community.cybozu.dev/u/Legacy_Account1041)\
**Post date:** [2019 年 8 月 26 日午前 10:53 UTC](https://community.cybozu.dev/t/topic/4331/3 "2019-08-26T10:53:54Z")

</div>

ひよこさん

アドバイス有難うございました。  
下記の通りスクリプトを用意してみましたがエラーになってしまいます。  
コードに誤りがあると思うのですがご指摘頂けると助かります。

```
(function() {
"use strict";

kintone.events.on(["app.record.create.change.<ユーザーを選択するフィールドのフィールドコード>","app.record.edit.change.<ユーザーを選択するフィールドのフィールドコード>"], function(event) {
var userCode = event.record.ユーザーを選択するフィールドのフィールドコード.value[0].code;
});

kintone.api(kintone.api.url('/v1/user/organizations'), 'GET', {code: userCode}).then(function(resp) {
var position = resp.organizationTitles[0].title.name;
var record = kintone.app.record.get();
record.record.<役職を入れるフィールドのフィールドコード>.value = position;
kintone.app.record.set(record);
return event;
});
})();

```

---

<div class="post-metadata">

**Author:** ![Legacy\_Account870](https://avatars.discourse-cdn.com/v4/letter/l/cc9497/32.png) [@Legacy\_Account870](https://community.cybozu.dev/u/Legacy_Account870)\
**Post date:** [2019 年 8 月 26 日午後 11:59 UTC](https://community.cybozu.dev/t/topic/4331/4 "2019-08-26T23:59:26Z")

</div>

uto さん

一番気になるのは、kintone.events.on のイベントハンドラにすべての処理が記述されていないことです。  
今回はフィールド変更時イベント内でやりたい処理なので、kintone.events.on のイベントハンドラ内にすべて記述する必要があります。

```
kintone.events.on(["app.record.create.change.<ユーザーを選択するフィールドのフィールドコード>","app.record.edit.change.<ユーザーを選択するフィールドのフィールドコード>"], function(event) {
// kintone.api~も含め、この部分にすべての処理を書く必要があります。
});

```

kintone のイベント処理って kintone 特有のものなので、[チュートリアル](https://community.cybozu.dev/hc/ja/articles/201755040)の第1回から読んでみると使い方の参考になりますよ！

---

<div class="post-metadata">

**Author:** ![Legacy\_Account1041](https://avatars.discourse-cdn.com/v4/letter/l/3ab097/32.png) [@Legacy\_Account1041](https://community.cybozu.dev/u/Legacy_Account1041)\
**Post date:** [2019 年 8 月 27 日午前 1:26 UTC](https://community.cybozu.dev/t/topic/4331/5 "2019-08-27T01:26:03Z")

</div>

ひよこさん

アドバイス有難うございます。  
お陰様で下記の通り修正し、選択したユーザの役職名をテキストボックスに表示できる様になりました。

```
(function() {
"use strict";

// ユーザー選択フィールドで選択したユーザの code を取得
kintone.events.on(["app.record.create.change.<ユーザーを選択するフィールドのフィールドコード>","app.record.edit.change.<ユーザーを選択するフィールドのフィールドコード>"], function(event) {
var userCode = event.record.<ユーザーを選択するフィールドのフィールドコード>.value[0].code;

// 上記で取得した code を使って ユーザーの所属組織エクスポート API(JSON) を使って取得
kintone.api(kintone.api.url('/v1/user/organizations'), 'GET', {code: userCode}).then(function(resp) {

// レスポンスの中に、organizationTitle型 のオブジェクトが返ってくる。役職名は title.name に入る。
var position = resp.organizationTitles[0].title.name;

// 取得した役職名を record に代入
var record = kintone.app.record.get();
record.record.<役職を入れるフィールドのフィールドコード>.value = position;
kintone.app.record.set(record);

return event;
});
});
})();

```

この度はアドバイス頂き、有難うございました。
