組織からユーザー情報取得

組織の所属ユーザーエクスポート-APIで

組織フィールド(1名しか所属していない)から

ユーザーの名前を取得するにはどうすればよいのでしょうか?

サンプルJavaScriptがなく、質問させて頂きました。

 

ご教授お願い致します。

こんなかんじです。

(function() {
"use strict";

const getOrganizationUser = function() {
const str = "組織のコード";
const code = { code: str };
const appURL = kintone.api.url("/v1/organization/users", true);
kintone.api(appURL, "GET", code).then(function(resp) {
console.log(resp);
}).catch(function(error) {
console.log(error);
});
};

kintone.events.on("app.record.index.show", function(event) {
getOrganizationUser();
});
})();

TK様

お世話になります。

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

上記プログラムでapp.record.index.show→app.record.detail.showに変更して試してみたのですが、

{userTitles: Array(0)}で階層を開いていったのですが名前が取得できませんでした。

どのレコード番号かわからないため、取得できないのでしょうか?

app.record.index.showでも試したのですが、同じ結果のため何かやり方が間違っているのでしょうか?

 

↓ここの「組織のコード」は、ご自身の環境で変えないとだめですね。

下記URLを参考にしてください!

conststr ="組織のコード";

https://jp.cybozu.help/general/ja/admin/list_useradmin/list_division/dprmntdetails.html

TK様

フィールドコードと勘違いしておりました!

申し訳ありません!

ということは組織フィールドから組織のコードを取得してその値をcodeに入れればよいのですね!

早速試してみます!

すみませんこちらも組織フィールドというのを見落としておりました。

おそらくこれで動くかと!

「組織選択」はフィールドコードなので適時変えてください!

(function() {
"use strict";

const getOrganizationUser = function(event) {

const str = event.record.組織選択.value[0].code;
const code = { code: str };
const appURL = kintone.api.url("/v1/organization/users", true);
kintone.api(appURL, "GET", code).then(function(resp) {
console.log(resp);
}).catch(function(error) {
console.log(error);
});
};

kintone.events.on("app.record.detail.show", function(event) {
getOrganizationUser(event);
return event;
});
})();

TK様

お世話になります。

無事上記のプログラムで動きました!

あとは配列の中のnameを文字列フィールドに格納したいと思います!

本当に有難うございました!

たぶん初歩的なミスなんでしょうが、

文字フィールドに取得した名前が変更されないのはなぜでしょうか?

console.logで文字列フィールドを見るとデータは入っているのですが・・・

 

(function() {
"use strict";

const getOrganizationUser = function(event) {
var record = event.record;
const str = event.record.組織フィールド.value[0].code;
const code = { code: str };
const appURL = kintone.api.url("/v1/organization/users", true);
kintone.api(appURL, "GET", code).then(function(resp) {
console.log(resp);
console.log(resp.userTitles[0].user.name);
var user = resp.userTitles[0].user.name;
record['文字列フィールド'].value = user;
console.log(record['文字列フィールド']['value']);
}).catch(function(error) {
console.log(error);
});
};

kintone.events.on(["app.record.create.change.組織フィールド","app.record.edit.change.組織フィールド"], function(event) {
getOrganizationUser(event);
return event;
});
})

その辺私もしっかりと理解はできてないのですが、非同期処理になるとフィールドに値をsetする前にeventが返ったりするので

ちょっと記述を変えたりしないとなんです。

具体的にはkintone.app.record.get()とkintone.app.record.set()を使います。

おそらくこれでいけるかと。

(function () {
"use strict";

const getOrganizationUser = function (event) {
const str = event.record.組織フィールド.value[0].code;
const code = { code: str };
const appURL = kintone.api.url("/v1/organization/users", true);
kintone.api(appURL, "GET", code).then(function (resp) {
var record = kintone.app.record.get();
var user = resp.userTitles[0].user.name;
record.record['文字列フィールド'].value = user;
kintone.app.record.set(record);
}).catch(function (error) {
console.log(error);
});
};

kintone.events.on(["app.record.create.change.組織フィールド", "app.record.edit.change.組織フィールド"], function (event) {
getOrganizationUser(event);
return event;
});
})();

TK様

お世話になります。

正しく処理がされました!

編集中だから不要だと思っていましたが、

getとsetが必要なんですね!

勉強になりました。

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