# User 登録のカスタム項目の取得コードについて

**URL:** <https://community.cybozu.dev/t/topic/8442>\
**Category:** kintone 開発相談\
**Created:** [2023 年 12 月 6 日午前 8:47 UTC](https://community.cybozu.dev/t/topic/8442 "2023-12-06T08:47:13Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![Kobayashi](https://avatars.discourse-cdn.com/v4/letter/k/a9adbd/32.png) [@Kobayashi](https://community.cybozu.dev/u/Kobayashi)\
**Post date:** [2023 年 12 月 6 日午前 8:47 UTC](https://community.cybozu.dev/t/topic/8442/1 "2023-12-06T08:47:13Z")

</div>

出張費用申請のフローを構築しています。プロセス管理で、”出張費用承認”のステータスを承認した人を、ユーザー選択フィールドの"Host承認者"にユーザーを反映させ、"HostCompany確認中（出張費用）"のプロセスで承認をした人を"GHR承認者"に入れるコードを書きました。これまでは、"Host承認者"と"GHR承認者"はユーザー選択フィールドだったのですが、文字列（1行）フィールドにフィールドを直し、ユーザー管理のカスタマイズ項目の"Name"覧に登録をした値を反映させたいです。

これまで利用していたコードは以下で、これは動いていました。  
// HOST側の承認者、GHR側の承認者をユーザー選択フィールドに入力します。  
const userSelectFieldCodeHost = “Host承認者”;  
const userSelectFieldCodeGHR = “GHR承認者”;  
const saveStatusHost = “出張費用承認”;  
const saveStatusGHR = “HostCompany確認中（出張費用）”;

```
kintone.events.on("app.record.detail.process.proceed", function(event) {

```

if (event.nextStatus.value === saveStatusHost) {  
const authorizer = kintone.getLoginUser();

```
  event.record[userSelectFieldCodeHost].value = [
   {
    code: authorizer.code
    }
    ];
   }

```

if (event.nextStatus.value === saveStatusGHR) {  
const authorizerGHR = kintone.getLoginUser();

```
event.record[userSelectFieldCodeGHR].value = [
  {
    code: authorizerGHR.code
    }
  ];
}

return event;

```

});

ただ、英語名で表示をさせたいので、ユーザー管理の カスタマイズ項目の設定に”Name”という文字列（1行）の項目をもたせ、そこに英語名を入れ、これをフォームの文字列（1行）フィールドに反映させたいです。  
※日本語環境で、承認者の名前を英語で出したいものです。

以下のように改修したのですが動きません。

const userSelectFieldCodeHost = “Host承認者”;  
const userSelectFieldCodeGHR = “GHR承認者”;  
const saveStatusHost = “出張費用承認”;  
const saveStatusGHR = “HostCompany確認中（出張費用）”;

```
kintone.events.on("app.record.detail.process.proceed", function(event) {

```

if (event.nextStatus.value === saveStatusHost) {  
const authorizer = kintone.getLoginUser().Name;

```
  event.record[userSelectFieldCodeHost].value = authorizer
    
    
   }

```

if (event.nextStatus.value === saveStatusGHR) {  
const authorizerGHR = kintone.getLoginUser().Name;

```
event.record[userSelectFieldCodeGHR].value = authorizerGHR

}

return event;

```

});

})();

どのように修正すれば良いのでしょうか。ユーザー登録の、組織／ユーザーの中にある” カスタマイズ項目の設定”を利用しています。  
ここの値を引っ張るにはどのようにすれば良いか、お知恵をお貸しください。宜しくお願い致します。

---

<div class="post-metadata">

**Author:** ![ko\_ji](https://sea1.discourse-cdn.com/flex015/user_avatar/community.cybozu.dev/ko_ji/32/31_2.png) [@ko\_ji](https://community.cybozu.dev/u/ko_ji)\
**Post date:** [2023 年 12 月 7 日午前 1:44 UTC](https://community.cybozu.dev/t/topic/8442/2 "2023-12-07T01:44:25Z")

</div>

こんにちは。

[kintone.getLoginUser()](https://cybozu.dev/ja/kintone/docs/js-api/kintone/user/) では、リンク先を確認してもらうとわかるのですが、  
カスタマイズ項目の値を取得することはできません。

カスタマイズ項目で設定されている値を取得したい場合には、  
[User API](https://cybozu.dev/ja/common/docs/user-api/) で対象ユーザー情報を取得する必要があります。

**&nbsp;**  **&nbsp;** ※ ユーザー管理については、cybozu.com共通管理のプロフィール項目に、  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;カスタマイズ項目を追加している認識です。

現状の処理だと、kintone.getLoginUser().Name で値が取得できていないので、  
処理がうまく動いていないのかなと思います。

kintone.getLoginUser().Name の代わりに、User API の [ユーザーを取得する](https://cybozu.dev/ja/common/docs/user-api/users/get-users/) を  
利用することで、処理が動くようになるか確認してみてもらえればと思います。

なお、ユーザーを取得する API は、[kintone.api()](https://cybozu.dev/ja/kintone/docs/js-api/api/kintone-rest-api-request/) を利用した以下のような処理で  
実行することが可能ですよ。

```javascript
const body = {
   codes:[kintone.getLoginUser().code]
};

const resp = await kintone.api(kintone.api.url('/v1/users.json', true), 'GET', body);
//カスタマイズ項目が1つのみで、対象項目値を抽出する場合
console.log(resp.users[0].customItemValues[0].value);

```

---

<div class="post-metadata">

**Author:** ![Kobayashi](https://avatars.discourse-cdn.com/v4/letter/k/a9adbd/32.png) [@Kobayashi](https://community.cybozu.dev/u/Kobayashi)\
**Post date:** [2023 年 12 月 7 日午前 7:25 UTC](https://community.cybozu.dev/t/topic/8442/3 "2023-12-07T07:25:57Z")

</div>

> [@ko\_ji](#):
>
> カスタマイズ項目で設定されている値を取得したい場合には、  
> User APIで対象ユーザー情報を取得する必要があります。

[ko\_ji](https://community.cybozu.dev/u/ko_ji) 様

お世話になっております。  
お忙しい中、非常に有用なご回答ありがとうございました。

カスタマイズ項目で設定されている値を取得したい場合には、  
User APIで対象ユーザー情報を取得する必要があるとの事、非常に勉強になりました。

今回は大人しく、基本項目の使わない項目”内線”に英語名を持たせて拾うという方向にひとまず走る事にしました。  
（安易な方法に走り申し訳ありません）  
一旦、以下で動くようになりましたが、頂いた方向でも組み立てられるよう、平行して勉強はできればと思います。

ありがとうございました！！！

const userSelectFieldCodeHost = “Host承認者”;  
const userSelectFieldCodeGHR = “GHR承認者”;  
const saveStatusHost = “費用承認”;  
const saveStatusGHR = “HostCompany確認中（費用）”;

```
kintone.events.on("app.record.detail.process.proceed", function(event) {

```

if (event.nextStatus.value === saveStatusHost) {  
const authorizer = kintone.getLoginUser().extensionNumber;

event.record[userSelectFieldCodeHost].value = authorizer

}

if (event.nextStatus.value === saveStatusGHR) {  
const authorizerGHR = kintone.getLoginUser().extensionNumber;

event.record[userSelectFieldCodeGHR].value = authorizerGHR

}

```
return event;

```

});
