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

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

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

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

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

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

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

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

 

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

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

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

ユーザー選択フィールドのcodeとユーザーエクスポートAPIを使うとすれば、このような感じでしょうか。

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);});

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が正しく表示されています。

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

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

 

 

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

Ryu Yamashita様

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

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

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

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

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

実現としては、

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

GaroonSOAPでCordをもとにUserIDを取得

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

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

 

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