レコード保存時に、ユーザ情報からユーザ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でスケジュールへ登録
のような流れになります。
お手数をおかけしました。