お世話になります。渡邊です。
ログインしているユーザ以外のログイン名を取得して、
そのユーザに成り代わり、
レコードの登録(POST)record.json
をつかって、
データ登録(「ユーザー選択」に入れたい)をしたいのですが、
うまくログイン名が取得できません。
下記のサイトを参考に下記のようなコードを書いたのですが、
編集中のデータの情報が出てきてしまい、よくわからない状態です。
どうすれば全ユーザデータを取得できるのでしょうか?
https://www.joyzo.co.jp/blog/592#
(function () {
“use strict”;
kintone.events.on(‘app.record.edit.show’, function (event) {
var loginUserCode = kintone.getLoginUser()[‘code’]; // ログイン名を取得
var path = ‘/v1/users.json’;
var data = {
“offset”:0,
“size”: 100
};
kintone.api(path, ‘GET’, data, function(resp){
var record = kintone.app.record.get(); // レコード情報を取得
console.log(record);
}, function(resp){
var errmsg = ‘所属組織取得時にエラーが発生しました。’;
if (resp.message !== undefined){
errmsg += ‘’ + resp.message;
}
alert(errmsg);
});
…
});
})();
渡邊さん
> https://www.joyzo.co.jp/blog/592#
まず、こちらの記事は、現在のkintoneでは組織フィールドが追加されたこともあり、特にシナリオが陳腐化したものと言えます。
やられたい内容がきれいに理解できていませんが、ドメイン内のユーザーで自分以外のユーザーを全て取得して、ユーザー選択フィールドにセットすると(ちょっと強引なシナリオな感じはしますが)想定した時には、次のような感じでしょうか。
kintone.api('/v1/users', 'GET', {}, function(resp) {
var loginUserCode = kintone.getLoginUser()['code'];
var users = resp.users;
var post_record = {
'ユーザー選択':{
'value': []
}
};
for (var i = 0; i < users.length; i++) {
if (users[i].code !== loginUserCode) {
post_record['ユーザー選択']['value'].push({
code: users[i].code
});
}
}
kintone.api(kintone.api.url('/k/v1/record', true), 'POST', {
app: kintone.app.getId(),
record: post_record
}, function(resp) {
console.log(resp);
}, function(resp) {
var errmsg = 'レコード登録時にエラーが発生しました。';
if (resp.message !== undefined){
errmsg += resp.message;
}
console.log(errmsg);
alert(errmsg);
});
}, function(resp) {
var errmsg = 'ユーザー取得時にエラーが発生しました。';
if (resp.message !== undefined) {
errmsg += '' + resp.message;
}
alert(errmsg);
});
なお、kintoneのレコード取得APIと同じくいちリクエスト100件までのようなので、本当に全件取得が必要であればPromiseを利用したモダンなアプリの全レコード取得の書き方等を参考にして拡張すると良いかと思います。
Yamashita様
さっそくのご回答ありがとうございます。
追って、試させていただきます。
やりたい内容は、アプリAにてデータを編集中に、アプリBのデータ投入をしたい、というものでした。
全ユーザ情報が取得できれば、そこからループで回して利用できると思いますので、ありがとうございました。
渡邊さん
> 編集中のデータの情報が出てきてしまい、よくわからない状態です。
kintone.api(path, ‘GET’, data, function(resp){
var record = kintone.app.record.get(); // レコード情報を取得
としていますが、全ユーザーデータが入っているのは resp の方です。
編集中のデータの情報が出てきているということは、record を見ているのではないでしょうか?
斎藤さま
ご回答ありがとうございます。
そうなんですね!そういえば、jsonでの取り出しでもそうだった気がします。
追って試させて頂きます。ありがとうございました。
>斎藤さま
ご指摘の通り、record を見ているため、うまくいっておらず、
respには全ユーザデータが入っていました。
おかげでやりたかったことができました。
ご回答ありがとうございました。