# フィールドに入力されたユーザ情報からユーザIDを取得するには

**URL:** <https://community.cybozu.dev/t/topic/798>\
**Category:** kintone 開発相談\
**Created:** [2017 年 7 月 15 日午前 7:06 UTC](https://community.cybozu.dev/t/topic/798 "2017-07-15T07:06:04Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![Legacy\_Account333](https://avatars.discourse-cdn.com/v4/letter/l/6bbea6/32.png) [@Legacy\_Account333](https://community.cybozu.dev/u/Legacy_Account333)\
**Post date:** [2017 年 7 月 15 日午前 7:06 UTC](https://community.cybozu.dev/t/topic/798/1 "2017-07-15T07:06:04Z")

</div>

レコード保存時に、ユーザ情報からユーザIDを取得したいと思っています。

保存時にはフィールド上には必ず1名のユーザの情報が入力されているのが前提です。

'app.record.create.submit.success’のイベント発生後、

var record = event.recordにて登録されたレコードの情報は取得できています。

この「ユーザ」というフィールド内に、code/nameは存在するのですが、UserIDがありません。

UserAPIを利用して取得する必要があるとおもうのですが、使い方がよくわかりません。

ご指導いただけませんでしょうか？

&nbsp;

※USERIDとはCybozu共通管理に表示されるユーザIDです。

※kintone.getLoginUser();でログインしているユーザは取得できるのは理解しています。このフィールド内にはログインしているユーザ以外のユーザが含まれる場合があります。

---

<div class="post-metadata">

**Author:** ![Legacy\_Account1574](https://avatars.discourse-cdn.com/v4/letter/l/76d3ee/32.png) [@Legacy\_Account1574](https://community.cybozu.dev/u/Legacy_Account1574)\
**Post date:** [2017 年 7 月 17 日午前 5:44 UTC](https://community.cybozu.dev/t/topic/798/2 "2017-07-17T05:44:17Z")

</div>

ユーザーIDを何に使うかによりますが、

ユーザー選択フィールドのcodeと[ユーザーエクスポートAPI](https://community.cybozu.dev/hc/ja/articles/202363040)を使うとすれば、このような感じでしょうか。

var record = event.record;  
var users = record[‘ユーザー選択’]value;  
var codes = users.map(function(user){return user.code});  
kintone.api(‘/v1/users’, ‘GET’, {codes:codes},function(r){console.log(r);});

---

<div class="post-metadata">

**Author:** ![Legacy\_Account333](https://avatars.discourse-cdn.com/v4/letter/l/6bbea6/32.png) [@Legacy\_Account333](https://community.cybozu.dev/u/Legacy_Account333)\
**Post date:** [2017 年 7 月 18 日午前 4:43 UTC](https://community.cybozu.dev/t/topic/798/3 "2017-07-18T04:43:00Z")

</div>

Ryu Yamashita様

回答ありがとうございます。

ユーザーIDは、GaroonSOAPで該当ユーザのスケジュール登録のために利用します。

提示していただいたソースを組み込んでみたのですが、結果がundefinedとして表示されてしまいます。

var record = event.record ; //Kintoenレコード  
var users = record[‘ユーザー’].value;  
var cordes = users.map(function(user){return user.code});  
kintone.api(‘/v1/users’, ‘GET’, {codes:cordes},function(r){console.log(r);});

cordesには、フィールドに入力されたユーザ名のcodeが正しく表示されています。

&nbsp;コンソール上に「Provisional headers are shown」が表示されていますが、

こちらが原因となっているのでしょうか？

&nbsp;

&nbsp;

---

<div class="post-metadata">

**Author:** ![Legacy\_Account1574](https://avatars.discourse-cdn.com/v4/letter/l/76d3ee/32.png) [@Legacy\_Account1574](https://community.cybozu.dev/u/Legacy_Account1574)\
**Post date:** [2017 年 7 月 20 日午後 4:10 UTC](https://community.cybozu.dev/t/topic/798/4 "2017-07-20T16:10:59Z")

</div>

「Provisional headers are shown」はとにかく通信に失敗してて、原因はキャッシュだか、別の原因だったか色々あったかと思います。kintone.api()で見かけたことはありませんが、周辺・全体のコードはどのようになってますでしょうか（非同期処理等記述方法が気になりました）。

---

<div class="post-metadata">

**Author:** ![Legacy\_Account333](https://avatars.discourse-cdn.com/v4/letter/l/6bbea6/32.png) [@Legacy\_Account333](https://community.cybozu.dev/u/Legacy_Account333)\
**Post date:** [2017 年 7 月 21 日午前 7:44 UTC](https://community.cybozu.dev/t/topic/798/5 "2017-07-21T07:44:48Z")

</div>

Ryu Yamashita様

回答ありがとうございます。KintoneAPIでの取得はできました。ただ、実現したいことは仕様でできませんでした。

KintoneAPIで取得したUserID（Cybozu共通管理で表示されるIDと同じもの [https://～admin/directory/editUser?id=XX](https://xn--admin-bu33a/directory/editUser?id=XX))

ですが、Garoonのスケジュールで利用するIDは内部で違うIDを利用しているようで、実際に取得した値が違いました。

Cybozuからの回答では、kintoneで取得できるユーザー ID と「Garoon」API で利用するユーザー ID は  
異なるものとなっております。

&nbsp; ※ 「Garoon」API で利用するユーザー ID は、「ガルーン」で内部的に保持しているユーザー ID を利用いただく  
&nbsp;&nbsp;&nbsp;&nbsp; 必要がございます。

実現としては、

Kintoneのフィールドの値より、UserIDのCodeを取得

GaroonSOAPでCordをもとにUserIDを取得

取得したUserIDを利用して、GaroonSOAPでスケジュールへ登録

のような流れになります。

&nbsp;

お手数をおかけしました。
