ユーザーエクスポートAPI(JSON)を利用した全ユーザーのデータの取得方法について

お世話になります。渡邊です。

 

ログインしているユーザ以外のログイン名を取得して、

そのユーザに成り代わり、

レコードの登録(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には全ユーザデータが入っていました。

おかげでやりたかったことができました。

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